Paper/patches/server/0570-Missing-Entity-API.patch

1366 lines
56 KiB
Diff
Raw Normal View History

2021-06-22 09:44:02 +02:00
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com>
Date: Mon, 21 Jun 2021 23:56:07 -0400
Subject: [PATCH] Missing Entity API
2021-06-22 09:44:02 +02:00
== AT ==
public net.minecraft.world.entity.animal.Fox isDefending()Z
public net.minecraft.world.entity.animal.Fox setDefending(Z)V
public net.minecraft.world.entity.animal.Fox setFaceplanted(Z)V
public net.minecraft.world.entity.animal.Panda getEatCounter()I
public net.minecraft.world.entity.animal.Panda setEatCounter(I)V
public net.minecraft.world.entity.animal.Bee isRolling()Z
public net.minecraft.world.entity.animal.Bee setRolling(Z)V
public net.minecraft.world.entity.animal.Bee numCropsGrownSincePollination
public net.minecraft.world.entity.animal.Bee ticksWithoutNectarSinceExitingHive
public net.minecraft.world.entity.monster.piglin.Piglin isChargingCrossbow()Z
public net.minecraft.world.entity.ambient.Bat targetPosition
public net.minecraft.world.entity.monster.Ravager attackTick
public net.minecraft.world.entity.monster.Ravager stunnedTick
public net.minecraft.world.entity.monster.Ravager roarTick
public net.minecraft.world.entity.vehicle.MinecartTNT explode(D)V
public net.minecraft.world.entity.vehicle.MinecartTNT fuse
public net.minecraft.world.entity.monster.Endermite life
public net.minecraft.world.entity.projectile.AbstractArrow soundEvent
public net.minecraft.world.entity.monster.Phantom anchorPoint
public net.minecraft.world.entity.npc.WanderingTrader getWanderTarget()Lnet/minecraft/core/BlockPos;
2022-11-26 03:21:40 +01:00
public net.minecraft.world.entity.animal.AbstractSchoolingFish leader
public net.minecraft.world.entity.animal.AbstractSchoolingFish schoolSize
2022-12-10 01:56:13 +01:00
public net.minecraft.world.entity.animal.Rabbit moreCarrotTicks
public net.minecraft.world.entity.AreaEffectCloud ownerUUID
2023-12-03 02:54:58 +01:00
public net.minecraft.world.entity.animal.MushroomCow stewEffects
public net.minecraft.world.entity.Entity FLAG_INVISIBLE
2024-04-25 21:16:00 +02:00
public net.minecraft.world.entity.animal.Cat setRelaxStateOne(Z)V
public net.minecraft.world.entity.animal.Cat isRelaxStateOne()Z
Co-authored-by: Nassim Jahnke <nassim@njahnke.dev>
2022-03-11 15:24:45 +01:00
Co-authored-by: Jake Potrebic <jake.m.potrebic@gmail.com>
Co-authored-by: William Blake Galbreath <blake.galbreath@gmail.com>
Co-authored-by: SoSeDiK <mrsosedik@gmail.com>
Co-authored-by: booky10 <boooky10@gmail.com>
2023-09-14 12:54:43 +02:00
Co-authored-by: Amin <amin.haddou@frg.wwschool.de>
2024-03-20 22:33:34 +01:00
Co-authored-by: TrollyLoki <trollyloki@gmail.com>
Co-authored-by: FireInstall <kettnerl@hu-berlin.de>
Co-authored-by: maxcom1 <46265094+maxcom1@users.noreply.github.com>
2021-06-22 09:44:02 +02:00
2022-11-26 03:21:40 +01:00
diff --git a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
2024-04-27 22:30:15 +02:00
index 55e85267c7cbd8be5d2da212e33c43fb353f2e12..c72d6bccf7d72d08d388c65936a89c92261c7860 100644
2022-11-26 03:21:40 +01:00
--- a/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
+++ b/src/main/java/com/destroystokyo/paper/entity/ai/MobGoalHelper.java
@@ -165,7 +165,7 @@ public class MobGoalHelper {
2022-11-26 03:21:40 +01:00
bukkitMap.put(net.minecraft.world.entity.monster.Endermite.class, Endermite.class);
bukkitMap.put(net.minecraft.world.entity.monster.Evoker.class, Evoker.class);
bukkitMap.put(AbstractFish.class, Fish.class);
- bukkitMap.put(AbstractSchoolingFish.class, Fish.class); // close enough
+ bukkitMap.put(AbstractSchoolingFish.class, io.papermc.paper.entity.SchoolableFish.class);
bukkitMap.put(FlyingMob.class, Flying.class);
bukkitMap.put(net.minecraft.world.entity.animal.Fox.class, Fox.class);
bukkitMap.put(net.minecraft.world.entity.monster.Ghast.class, Ghast.class);
diff --git a/src/main/java/io/papermc/paper/entity/PaperSchoolableFish.java b/src/main/java/io/papermc/paper/entity/PaperSchoolableFish.java
new file mode 100644
index 0000000000000000000000000000000000000000..41bf71d116ffc5431586ce54abba7f8def6c1dcf
--- /dev/null
+++ b/src/main/java/io/papermc/paper/entity/PaperSchoolableFish.java
@@ -0,0 +1,52 @@
+package io.papermc.paper.entity;
+
+import net.minecraft.world.entity.animal.AbstractSchoolingFish;
+import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.entity.CraftFish;
+import org.jetbrains.annotations.NotNull;
+
+public class PaperSchoolableFish extends CraftFish implements SchoolableFish {
+
+ public PaperSchoolableFish(CraftServer server, AbstractSchoolingFish entity) {
+ super(server, entity);
+ }
+
+ @Override
+ public AbstractSchoolingFish getHandle() {
+ return (AbstractSchoolingFish) super.getHandle();
+ }
+
+ @Override
+ public void startFollowing(@NotNull SchoolableFish fish) {
+ if (this.getHandle().isFollower()) { // If following a fish already, properly remove the old one
+ this.stopFollowing();
+ }
+
+ this.getHandle().startFollowing(((PaperSchoolableFish) fish).getHandle());
+ }
+
+ @Override
+ public void stopFollowing() {
+ this.getHandle().stopFollowing();
+ }
+
+ @Override
+ public int getSchoolSize() {
+ return this.getHandle().schoolSize;
+ }
+
+ @Override
+ public int getMaxSchoolSize() {
+ return this.getHandle().getMaxSchoolSize();
+ }
+
+ @Override
+ public SchoolableFish getSchoolLeader() {
+ AbstractSchoolingFish leader = this.getHandle().leader;
+ if (leader == null) {
+ return null;
+ }
+
+ return (SchoolableFish) leader.getBukkitEntity();
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/animal/AbstractSchoolingFish.java b/src/main/java/net/minecraft/world/entity/animal/AbstractSchoolingFish.java
2024-04-24 16:29:12 +02:00
index 2cd61138dfaa82fa698ef8d32d690f51f621ee3b..957eb2ba3f647f70522243fedf36b921e58142bd 100644
2022-11-26 03:21:40 +01:00
--- a/src/main/java/net/minecraft/world/entity/animal/AbstractSchoolingFish.java
+++ b/src/main/java/net/minecraft/world/entity/animal/AbstractSchoolingFish.java
2024-04-24 16:29:12 +02:00
@@ -51,6 +51,7 @@ public abstract class AbstractSchoolingFish extends AbstractFish {
2022-11-26 03:21:40 +01:00
}
public void stopFollowing() {
+ if (this.leader == null) return; // Avoid NPE, plugins can now set the leader and certain fish goals might cause this method to be called
this.leader.removeFollower();
this.leader = null;
}
2022-03-19 15:30:16 +01:00
diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java
2024-04-24 16:29:12 +02:00
index d4389172c3c006ebec5d9cd8213cdd499ab39b68..d317b8500e8d2c280e52140440cf2b9cb61c3b28 100644
2022-03-19 15:30:16 +01:00
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
2024-04-24 16:29:12 +02:00
@@ -543,11 +543,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
2022-03-19 15:30:16 +01:00
this.setFlag(4, hasStung);
}
+ public net.kyori.adventure.util.TriState rollingOverride = net.kyori.adventure.util.TriState.NOT_SET; // Paper - Rolling override
public boolean isRolling() {
return this.getFlag(2);
}
public void setRolling(boolean nearTarget) {
+ nearTarget = rollingOverride.toBooleanOrElse(nearTarget); // Paper - Rolling override
this.setFlag(2, nearTarget);
}
2022-12-23 21:50:32 +01:00
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
2024-04-24 16:29:12 +02:00
index 864cb9bd4c71e41cf2ed165e5d252ccb613de6cb..290d41136f5ec7671bc4990dfe50da0a770c124d 100644
2022-12-23 21:50:32 +01:00
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Tadpole.java
2024-04-24 16:29:12 +02:00
@@ -50,6 +50,7 @@ public class Tadpole extends AbstractFish {
2022-12-23 21:50:32 +01:00
public int age;
protected static final ImmutableList<SensorType<? extends Sensor<? super Tadpole>>> SENSOR_TYPES = ImmutableList.of(SensorType.NEAREST_LIVING_ENTITIES, SensorType.NEAREST_PLAYERS, SensorType.HURT_BY, SensorType.FROG_TEMPTATIONS);
protected static final ImmutableList<MemoryModuleType<?>> MEMORY_TYPES = ImmutableList.of(MemoryModuleType.LOOK_TARGET, MemoryModuleType.NEAREST_VISIBLE_LIVING_ENTITIES, MemoryModuleType.WALK_TARGET, MemoryModuleType.CANT_REACH_WALK_TARGET_SINCE, MemoryModuleType.PATH, MemoryModuleType.NEAREST_VISIBLE_ADULT, MemoryModuleType.TEMPTATION_COOLDOWN_TICKS, MemoryModuleType.IS_TEMPTED, MemoryModuleType.TEMPTING_PLAYER, MemoryModuleType.BREED_TARGET, MemoryModuleType.IS_PANICKING);
+ public boolean ageLocked; // Paper
public Tadpole(EntityType<? extends AbstractFish> type, Level world) {
super(type, world);
2024-04-24 16:29:12 +02:00
@@ -100,7 +101,7 @@ public class Tadpole extends AbstractFish {
2022-12-23 21:50:32 +01:00
@Override
public void aiStep() {
super.aiStep();
2023-06-08 04:04:01 +02:00
- if (!this.level().isClientSide) {
+ if (!this.level().isClientSide && !this.ageLocked) { // Paper
2022-12-23 21:50:32 +01:00
this.setAge(this.age + 1);
}
2024-04-24 16:29:12 +02:00
@@ -110,12 +111,14 @@ public class Tadpole extends AbstractFish {
2022-12-23 21:50:32 +01:00
public void addAdditionalSaveData(CompoundTag nbt) {
super.addAdditionalSaveData(nbt);
nbt.putInt("Age", this.age);
+ nbt.putBoolean("AgeLocked", this.ageLocked); // Paper
}
@Override
public void readAdditionalSaveData(CompoundTag nbt) {
super.readAdditionalSaveData(nbt);
this.setAge(nbt.getInt("Age"));
+ this.ageLocked = nbt.getBoolean("AgeLocked"); // Paper
}
@Nullable
2024-04-24 16:29:12 +02:00
@@ -167,6 +170,7 @@ public class Tadpole extends AbstractFish {
Bucketable.saveDefaultDataToBucketTag(this, stack);
CustomData.update(DataComponents.BUCKET_ENTITY_DATA, stack, (nbttagcompound) -> {
nbttagcompound.putInt("Age", this.getAge());
+ nbttagcompound.putBoolean("AgeLocked", this.ageLocked); // Paper
});
2022-12-23 21:50:32 +01:00
}
2024-04-24 16:29:12 +02:00
@@ -177,6 +181,7 @@ public class Tadpole extends AbstractFish {
2022-12-23 21:50:32 +01:00
this.setAge(nbt.getInt("Age"));
}
+ this.ageLocked = nbt.getBoolean("AgeLocked"); // Paper
}
@Override
@@ -208,6 +213,7 @@ public class Tadpole extends AbstractFish {
2022-12-23 21:50:32 +01:00
}
private void ageUp(int seconds) {
+ if (this.ageLocked) return; // Paper
this.setAge(this.age + seconds * 20);
}
2021-10-21 03:09:42 +02:00
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
2024-04-24 16:29:12 +02:00
index d53ef42e64d87790ea86d806153f047005accb9f..57952ad65c905265799ba2d8f99cc4cf4aa69f94 100644
2021-10-21 03:09:42 +02:00
--- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java
2024-04-24 16:29:12 +02:00
@@ -753,6 +753,15 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
2021-10-21 03:09:42 +02:00
}
+ // Paper start - Horse API
2021-10-21 03:09:42 +02:00
+ public void setMouthOpen(boolean open) {
+ this.setFlag(FLAG_OPEN_MOUTH, open);
+ }
+ public boolean isMouthOpen() {
+ return this.getFlag(FLAG_OPEN_MOUTH);
+ }
+ // Paper end - Horse API
2022-12-07 21:16:54 +01:00
+
@Override
public InteractionResult mobInteract(Player player, InteractionHand hand) {
if (!this.isVehicle() && !this.isBaby()) {
2024-04-24 16:29:12 +02:00
@@ -795,6 +804,11 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
2021-10-21 03:09:42 +02:00
this.setFlag(16, eatingGrass);
}
+ // Paper start - Horse API
2021-10-21 03:09:42 +02:00
+ public void setForceStanding(boolean standing) {
+ this.setFlag(FLAG_STANDING, standing);
+ }
+ // Paper end - Horse API
2021-10-21 03:09:42 +02:00
public void setStanding(boolean angry) {
if (angry) {
this.setEating(false);
diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
2024-04-24 16:29:12 +02:00
index 37da58385ecf40baeb4665a0d9c262da03c01763..4fa1a12e7e5c23e1d902b59f2a315eac64134aa8 100644
--- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
+++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java
2023-09-22 09:24:44 +02:00
@@ -74,7 +74,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
@Nullable
private Llama caravanHead;
@Nullable
- private Llama caravanTail;
+ public Llama caravanTail; // Paper
public Llama(EntityType<? extends Llama> type, Level world) {
super(type, world);
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
2024-04-24 16:29:12 +02:00
index b0ac85dc3c67d2e4d70dfb09d4e8fc349aba14d2..b5cb4e4682f66ac9423af8d1547d0f1a4f9e6c5d 100644
2022-03-11 15:24:45 +01:00
--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
2024-04-24 16:29:12 +02:00
@@ -88,6 +88,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
return !entityliving.getType().is(EntityTypeTags.WITHER_FRIENDS) && entityliving.attackable();
2022-03-11 15:24:45 +01:00
};
private static final TargetingConditions TARGETING_CONDITIONS = TargetingConditions.forCombat().range(20.0D).selector(WitherBoss.LIVING_ENTITY_SELECTOR);
+ // Paper start
+ private boolean canPortal = false;
+
+ public void setCanTravelThroughPortals(boolean canPortal) { this.canPortal = canPortal; }
+ // Paper end
public WitherBoss(EntityType<? extends WitherBoss> type, Level world) {
super(type, world);
2024-04-24 16:29:12 +02:00
@@ -594,7 +599,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
2022-03-11 15:24:45 +01:00
@Override
public boolean canChangeDimensions() {
- return false;
+ return super.canChangeDimensions() && canPortal; // Paper
}
@Override
diff --git a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
2024-04-24 16:29:12 +02:00
index 853d65025d5e049467c1f1e7322580880506c347..57f84a0eccbdb051adddc25a1a7126f60c7c274b 100644
2022-03-11 15:24:45 +01:00
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
2024-04-24 16:29:12 +02:00
@@ -440,6 +440,16 @@ public class EnderMan extends Monster implements NeutralMob {
2022-03-11 15:24:45 +01:00
this.entityData.set(EnderMan.DATA_STARED_AT, true);
}
+ // Paper start
+ public void setCreepy(boolean creepy) {
+ this.entityData.set(EnderMan.DATA_CREEPY, creepy);
+ }
+
+ public void setHasBeenStaredAt(boolean hasBeenStaredAt) {
+ this.entityData.set(EnderMan.DATA_STARED_AT, hasBeenStaredAt);
+ }
+ // Paper end
+
@Override
public boolean requiresCustomPersistence() {
return super.requiresCustomPersistence() || this.getCarriedBlock() != null;
2022-03-06 22:20:38 +01:00
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java
2024-04-24 16:29:12 +02:00
index ba7104784cbbbb6eeacf0ca333af20212f6c47b0..373a4f036157017b0d95e8f1849780582235a549 100644
2022-03-06 22:20:38 +01:00
--- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java
+++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java
2024-04-24 16:29:12 +02:00
@@ -65,6 +65,12 @@ public class Ghast extends FlyingMob implements Enemy {
2022-03-06 22:20:38 +01:00
return this.explosionPower;
}
+ // Paper start
+ public void setExplosionPower(int explosionPower) {
+ this.explosionPower = explosionPower;
+ }
+ // Paper end
+
@Override
protected boolean shouldDespawnInPeaceful() {
return true;
diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
2024-04-24 16:29:12 +02:00
index b6653a942b07c2d1f7774054a68bf04d547d7cc0..deedc707971be0bd1b7757f4e9b6d2729cc669d0 100644
--- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
+++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java
2024-04-24 16:29:12 +02:00
@@ -202,6 +202,12 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
}
public void startConverting(@Nullable UUID uuid, int delay) {
+ // Paper start - missing entity behaviour api - converting without entity event
+ this.startConverting(uuid, delay, true);
+ }
+
+ public void startConverting(@Nullable UUID uuid, int delay, boolean broadcastEntityEvent) {
+ // Paper end - missing entity behaviour api - converting without entity event
this.conversionStarter = uuid;
this.villagerConversionTime = delay;
this.getEntityData().set(ZombieVillager.DATA_CONVERTING_ID, true);
2024-04-24 16:29:12 +02:00
@@ -209,7 +215,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder {
this.removeEffect(MobEffects.WEAKNESS, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.CONVERSION);
2023-06-08 04:04:01 +02:00
this.addEffect(new MobEffectInstance(MobEffects.DAMAGE_BOOST, delay, Math.min(this.level().getDifficulty().getId() - 1, 0)), org.bukkit.event.entity.EntityPotionEffectEvent.Cause.CONVERSION);
// CraftBukkit end
2023-06-08 04:04:01 +02:00
- this.level().broadcastEntityEvent(this, (byte) 16);
+ if (broadcastEntityEvent) this.level().broadcastEntityEvent(this, (byte) 16); // Paper - missing entity behaviour api - converting without entity event
}
@Override
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
2024-04-24 16:29:12 +02:00
index 636638bfee54618b36b09d49a76a46d47e1d09b4..c75ac52f302e8e29e0bdea32c85ccf6713257a9b 100644
2022-03-11 15:24:45 +01:00
--- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
+++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java
2024-04-24 16:29:12 +02:00
@@ -105,6 +105,20 @@ public class ThrownTrident extends AbstractArrow {
2022-03-11 15:24:45 +01:00
return (Boolean) this.entityData.get(ThrownTrident.ID_FOIL);
}
+ // Paper start
+ public void setFoil(boolean foil) {
+ this.entityData.set(ThrownTrident.ID_FOIL, foil);
+ }
+
+ public int getLoyalty() {
+ return this.entityData.get(ThrownTrident.ID_LOYALTY);
+ }
+
+ public void setLoyalty(byte loyalty) {
+ this.entityData.set(ThrownTrident.ID_LOYALTY, loyalty);
+ }
+ // Paper end
+
@Nullable
@Override
protected EntityHitResult findHitEntity(Vec3 currentPosition, Vec3 nextPosition) {
2021-10-21 03:09:42 +02:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java
2024-04-24 16:29:12 +02:00
index 3952e52b94c1cc97e1d2d3885f59d7690efb74ad..9bcc0931510607b8fbd01233e2b3c346369b214d 100644
2021-10-21 03:09:42 +02:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java
@@ -114,4 +114,36 @@ public abstract class CraftAbstractHorse extends CraftAnimals implements Abstrac
2021-10-21 03:09:42 +02:00
public AbstractHorseInventory getInventory() {
return new CraftSaddledInventory(getHandle().inventory);
}
+
+ // Paper start - Horse API
+ @Override
+ public boolean isEatingGrass() {
+ return this.getHandle().isEating();
+ }
+
+ @Override
+ public void setEatingGrass(boolean eating) {
+ this.getHandle().setEating(eating);
+ }
+
+ @Override
+ public boolean isRearing() {
+ return this.getHandle().isStanding();
+ }
+
+ @Override
+ public void setRearing(boolean rearing) {
+ this.getHandle().setForceStanding(rearing);
+ }
+
+ @Override
+ public boolean isEating() {
+ return this.getHandle().isMouthOpen();
+ }
+
+ @Override
+ public void setEating(boolean eating) {
+ this.getHandle().setMouthOpen(eating);
+ }
+ // Paper end - Horse API
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java
Updated Upstream (Bukkit/CraftBukkit) (#10691) Updated Upstream (Bukkit/CraftBukkit) 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: fa99e752 PR-1007: Add ItemMeta#getAsComponentString() 94a91782 Fix copy-pasted BlockType.Typed documentation 9b34ac8c Largely restore deprecated PotionData API 51a6449b PR-1008: Deprecate ITEMS_TOOLS, removed in 1.20.5 702d15fe Fix Javadoc reference 42f6cdf4 PR-919: Add internal ItemType and BlockType, delegate Material methods to them 237bb37b SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 035ea146 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 8c7880fb PR-1004: Improve field rename handling and centralize conversion between bukkit and string more 87c90e93 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent CraftBukkit Changes: 4af0f22e8 SPIGOT-7664: Item meta should prevail over block states c2ccc46ec SPIGOT-7666: Fix access to llama and horse special slot 124ac66d7 SPIGOT-7665: Fix ThrownPotion#getEffects() implementation only bringing custom effects 66f1f439a Restore null page behaviour of signed books even though not strictly allowed by API 6118e5398 Fix regression listening to minecraft:brand custom payloads c1a26b366 Fix unnecessary and potential not thread-safe chat visibility check 12360a7ec Remove unused imports 147b098b4 PR-1397: Add ItemMeta#getAsComponentString() 428aefe0e Largely restore deprecated PotionData API afe5b5ee9 PR-1275: Add internal ItemType and BlockType, delegate Material methods to them 8afeafa7d SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 4e7d749d4 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 441880757 Support both entity_data and bucket_entity_data on axolotl/fish buckets 0e22fdd1e Fix custom direct BlockState being not correctly set in DamageSource f2182ed47 SPIGOT-7659: TropicalFishBucketMeta should use BUCKET_ENTITY_DATA 2a6207fe1 PR-1393: Improve field rename handling and centralize conversion between bukkit and string more c024a5039 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent 741b84480 PR-1390: Improve internal handling of damage sources 0364df4e1 SPIGOT-7657: Error when loading angry entities
2024-05-11 23:48:37 +02:00
index 2f99fc44de05bfbb5c9a8c859312cb7d32310d62..81f5e1d866128af8fb2acc13aca715580fdf9886 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAreaEffectCloud.java
Updated Upstream (Bukkit/CraftBukkit) (#10691) Updated Upstream (Bukkit/CraftBukkit) 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: fa99e752 PR-1007: Add ItemMeta#getAsComponentString() 94a91782 Fix copy-pasted BlockType.Typed documentation 9b34ac8c Largely restore deprecated PotionData API 51a6449b PR-1008: Deprecate ITEMS_TOOLS, removed in 1.20.5 702d15fe Fix Javadoc reference 42f6cdf4 PR-919: Add internal ItemType and BlockType, delegate Material methods to them 237bb37b SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 035ea146 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 8c7880fb PR-1004: Improve field rename handling and centralize conversion between bukkit and string more 87c90e93 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent CraftBukkit Changes: 4af0f22e8 SPIGOT-7664: Item meta should prevail over block states c2ccc46ec SPIGOT-7666: Fix access to llama and horse special slot 124ac66d7 SPIGOT-7665: Fix ThrownPotion#getEffects() implementation only bringing custom effects 66f1f439a Restore null page behaviour of signed books even though not strictly allowed by API 6118e5398 Fix regression listening to minecraft:brand custom payloads c1a26b366 Fix unnecessary and potential not thread-safe chat visibility check 12360a7ec Remove unused imports 147b098b4 PR-1397: Add ItemMeta#getAsComponentString() 428aefe0e Largely restore deprecated PotionData API afe5b5ee9 PR-1275: Add internal ItemType and BlockType, delegate Material methods to them 8afeafa7d SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 4e7d749d4 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 441880757 Support both entity_data and bucket_entity_data on axolotl/fish buckets 0e22fdd1e Fix custom direct BlockState being not correctly set in DamageSource f2182ed47 SPIGOT-7659: TropicalFishBucketMeta should use BUCKET_ENTITY_DATA 2a6207fe1 PR-1393: Improve field rename handling and centralize conversion between bukkit and string more c024a5039 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent 741b84480 PR-1390: Improve internal handling of damage sources 0364df4e1 SPIGOT-7657: Error when loading angry entities
2024-05-11 23:48:37 +02:00
@@ -229,4 +229,17 @@ public class CraftAreaEffectCloud extends CraftEntity implements AreaEffectCloud
this.getHandle().setOwner(null);
}
}
+
+ // Paper start - owner API
+ @Override
+ public java.util.UUID getOwnerUniqueId() {
+ return this.getHandle().ownerUUID;
+ }
+
+ @Override
+ public void setOwnerUniqueId(final java.util.UUID ownerUuid) {
+ this.getHandle().setOwner(null);
+ this.getHandle().ownerUUID = ownerUuid;
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java
2023-10-27 01:34:58 +02:00
index b0a3531476f5a05ae846b68d825eddc35ebddea9..1bb72f28085f3885bec068b586ec222111044884 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java
@@ -27,4 +27,25 @@ public class CraftBat extends CraftAmbient implements Bat {
public void setAwake(boolean state) {
this.getHandle().setResting(!state);
}
+ // Paper start
+ @Override
+ public org.bukkit.Location getTargetLocation() {
+ net.minecraft.core.BlockPos pos = this.getHandle().targetPosition;
+ if (pos == null) {
+ return null;
+ }
+
2023-06-08 22:56:13 +02:00
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), pos);
+ }
+
+ @Override
+ public void setTargetLocation(org.bukkit.Location location) {
+ net.minecraft.core.BlockPos pos = null;
+ if (location != null) {
+ pos = io.papermc.paper.util.MCUtil.toBlockPosition(location);
+ }
+
+ this.getHandle().targetPosition = pos;
+ }
+ // Paper end
}
2022-03-19 15:30:16 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java
2023-10-27 01:34:58 +02:00
index cfff1be6a4a4936a2dadb2590abc3d33c123d048..3dac93b0ab5d5acf5b33dc4b0efed60319eb657b 100644
2022-03-19 15:30:16 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java
@@ -86,4 +86,42 @@ public class CraftBee extends CraftAnimals implements Bee {
2022-03-19 15:30:16 +01:00
public void setCannotEnterHiveTicks(int ticks) {
this.getHandle().setStayOutOfHiveCountdown(ticks);
}
+ // Paper start
+ @Override
+ public void setRollingOverride(net.kyori.adventure.util.TriState rolling) {
+ this.getHandle().rollingOverride = rolling;
+
+ this.getHandle().setRolling(this.getHandle().isRolling()); // Refresh rolling state
+ }
+
+ @Override
+ public boolean isRolling() {
+ return this.getRollingOverride().toBooleanOrElse(this.getHandle().isRolling());
+ }
+
+ @Override
+ public net.kyori.adventure.util.TriState getRollingOverride() {
+ return this.getHandle().rollingOverride;
+ }
+
+ @Override
+ public void setCropsGrownSincePollination(int crops) {
+ this.getHandle().numCropsGrownSincePollination = crops;
+ }
+
+ @Override
+ public int getCropsGrownSincePollination() {
+ return this.getHandle().numCropsGrownSincePollination;
+ }
+
+ @Override
+ public void setTicksSincePollination(int ticks) {
+ this.getHandle().ticksWithoutNectarSinceExitingHive = ticks;
+ }
+
+ @Override
+ public int getTicksSincePollination() {
+ return this.getHandle().ticksWithoutNectarSinceExitingHive;
+ }
2022-03-19 15:30:16 +01:00
+ // Paper end
}
2021-08-27 20:16:41 +02:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
2024-04-24 16:29:12 +02:00
index 760e8a59fd1a13d3af722bc18999f943a05151fe..a565ac47b3dc9a27e043fc9cb00b6dea950f08cf 100644
2021-08-27 20:16:41 +02:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java
2024-04-24 16:29:12 +02:00
@@ -84,4 +84,26 @@ public class CraftCat extends CraftTameableAnimal implements Cat {
+ ", this can happen if a plugin creates its own cat variant with out properly registering it.");
}
2021-08-27 20:16:41 +02:00
}
+
+ // Paper start - More cat api
2021-08-27 20:16:41 +02:00
+ @Override
+ public void setLyingDown(boolean lyingDown) {
+ this.getHandle().setLying(lyingDown);
+ }
+
+ @Override
+ public boolean isLyingDown() {
+ return this.getHandle().isLying();
+ }
+
+ @Override
+ public void setHeadUp(boolean headUp) {
+ this.getHandle().setRelaxStateOne(headUp);
+ }
+
+ @Override
+ public boolean isHeadUp() {
+ return this.getHandle().isRelaxStateOne();
+ }
+ // Paper end - More cat api
2021-08-27 20:16:41 +02:00
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java
2023-10-27 01:34:58 +02:00
index 64b75682a936e071353707f7615d6ff512fd617d..96f6e2fd9c6b20d34122abfe5c7fba732502d5a0 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java
@@ -18,4 +18,26 @@ public class CraftChicken extends CraftAnimals implements Chicken {
public String toString() {
return "CraftChicken";
}
+
+ // Paper start
+ @Override
+ public boolean isChickenJockey() {
+ return this.getHandle().isChickenJockey();
+ }
+
+ @Override
+ public void setIsChickenJockey(boolean isChickenJockey) {
+ this.getHandle().setChickenJockey(isChickenJockey);
+ }
+
+ @Override
+ public int getEggLayTime() {
+ return this.getHandle().eggTime;
+ }
+
+ @Override
+ public void setEggLayTime(int eggLayTime) {
+ this.getHandle().eggTime = eggLayTime;
+ }
+ // Paper end
}
2022-11-26 03:21:40 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftCod.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftCod.java
index fa0bf7db880063427ba12df1df1c72240fff93e9..63e6b07e3b159c74d9ef17be20b5ab43d07f0f5f 100644
2022-11-26 03:21:40 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCod.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftCod.java
@@ -3,7 +3,7 @@ package org.bukkit.craftbukkit.entity;
import org.bukkit.craftbukkit.CraftServer;
2022-11-26 03:21:40 +01:00
import org.bukkit.entity.Cod;
-public class CraftCod extends CraftFish implements Cod {
+public class CraftCod extends io.papermc.paper.entity.PaperSchoolableFish implements Cod { // Paper - School Fish API
public CraftCod(CraftServer server, net.minecraft.world.entity.animal.Cod entity) {
super(server, entity);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java
index af432f9a1d255a56c31c3b97aeb4457d17f37e3e..f93f8f6509b12eb9b1e07c829278bb0822dd7988 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftDolphin.java
@@ -18,4 +18,36 @@ public class CraftDolphin extends CraftWaterMob implements Dolphin {
public String toString() {
return "CraftDolphin";
}
+
+ // Paper start - Missing Dolphin API
+ @Override
+ public int getMoistness() {
+ return this.getHandle().getMoistnessLevel();
+ }
+
+ @Override
+ public void setMoistness(int moistness) {
+ this.getHandle().setMoisntessLevel(moistness);
+ }
+
+ @Override
+ public void setHasFish(boolean hasFish) {
+ this.getHandle().setGotFish(hasFish);
+ }
+
+ @Override
+ public boolean hasFish() {
+ return this.getHandle().gotFish();
+ }
+
+ @Override
+ public org.bukkit.Location getTreasureLocation() {
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), this.getHandle().getTreasurePos());
+ }
+
+ @Override
+ public void setTreasureLocation(org.bukkit.Location location) {
+ this.getHandle().setTreasurePos(io.papermc.paper.util.MCUtil.toBlockPosition(location));
+ }
+ // Paper end - Missing Dolphin API
}
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java
2023-10-27 01:34:58 +02:00
index 21dc209e6f98b6306833b41e2763e746047d5a94..983b9d6ddb58eff297e96e5c8b28ec427efa267d 100644
2022-03-11 15:24:45 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java
@@ -40,6 +40,28 @@ public class CraftEnderman extends CraftMonster implements Enderman {
2022-03-11 15:24:45 +01:00
this.getHandle().setCarriedBlock(blockData == null ? null : ((CraftBlockData) blockData).getState());
}
+ // Paper start
+ @Override
+ public boolean isScreaming() {
+ return this.getHandle().isCreepy();
+ }
+
+ @Override
+ public void setScreaming(boolean screaming) {
+ this.getHandle().setCreepy(screaming);
+ }
+
+ @Override
+ public boolean hasBeenStaredAt() {
+ return this.getHandle().hasBeenStaredAt();
+ }
+
+ @Override
+ public void setHasBeenStaredAt(boolean hasBeenStaredAt) {
+ this.getHandle().setHasBeenStaredAt(hasBeenStaredAt);
+ }
+ // Paper end
+
@Override
public EnderMan getHandle() {
2023-10-27 01:34:58 +02:00
return (EnderMan) this.entity;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java
index fc0f0e841dc974d080e1abb9bbafb5165801131f..d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java
@@ -28,4 +28,15 @@ public class CraftEndermite extends CraftMonster implements Endermite {
public void setPlayerSpawned(boolean playerSpawned) {
// Nop
}
+ // Paper start
+ @Override
+ public void setLifetimeTicks(int ticks) {
+ this.getHandle().life = ticks;
+ }
+
+ @Override
+ public int getLifetimeTicks() {
+ return this.getHandle().life;
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
2024-04-24 16:29:12 +02:00
index d30e1dd1b4525674c8a52da9b677c09a251b2467..9edcdc71b28cf08e42fbe44723ba540e8d4f7808 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java
2024-04-24 16:29:12 +02:00
@@ -1067,4 +1067,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity {
return set;
}
// Paper end - tracked players API
+
+ // Paper start - missing entity api
+ @Override
+ public boolean isInvisible() { // Paper - moved up from LivingEntity
+ return this.getHandle().isInvisible();
+ }
+
+ @Override
+ public void setInvisible(boolean invisible) { // Paper - moved up from LivingEntity
+ this.getHandle().persistentInvisibility = invisible;
+ this.getHandle().setSharedFlag(Entity.FLAG_INVISIBLE, invisible);
+ }
+
+ @Override
+ public void setNoPhysics(boolean noPhysics) {
+ this.getHandle().noPhysics = noPhysics;
+ }
+
+ @Override
+ public boolean hasNoPhysics() {
+ return this.getHandle().noPhysics;
+ }
+ // Paper end - missing entity api
}
2024-03-20 22:33:34 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java
Updated Upstream (Bukkit/CraftBukkit) (#10691) Updated Upstream (Bukkit/CraftBukkit) 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: fa99e752 PR-1007: Add ItemMeta#getAsComponentString() 94a91782 Fix copy-pasted BlockType.Typed documentation 9b34ac8c Largely restore deprecated PotionData API 51a6449b PR-1008: Deprecate ITEMS_TOOLS, removed in 1.20.5 702d15fe Fix Javadoc reference 42f6cdf4 PR-919: Add internal ItemType and BlockType, delegate Material methods to them 237bb37b SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 035ea146 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 8c7880fb PR-1004: Improve field rename handling and centralize conversion between bukkit and string more 87c90e93 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent CraftBukkit Changes: 4af0f22e8 SPIGOT-7664: Item meta should prevail over block states c2ccc46ec SPIGOT-7666: Fix access to llama and horse special slot 124ac66d7 SPIGOT-7665: Fix ThrownPotion#getEffects() implementation only bringing custom effects 66f1f439a Restore null page behaviour of signed books even though not strictly allowed by API 6118e5398 Fix regression listening to minecraft:brand custom payloads c1a26b366 Fix unnecessary and potential not thread-safe chat visibility check 12360a7ec Remove unused imports 147b098b4 PR-1397: Add ItemMeta#getAsComponentString() 428aefe0e Largely restore deprecated PotionData API afe5b5ee9 PR-1275: Add internal ItemType and BlockType, delegate Material methods to them 8afeafa7d SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 4e7d749d4 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 441880757 Support both entity_data and bucket_entity_data on axolotl/fish buckets 0e22fdd1e Fix custom direct BlockState being not correctly set in DamageSource f2182ed47 SPIGOT-7659: TropicalFishBucketMeta should use BUCKET_ENTITY_DATA 2a6207fe1 PR-1393: Improve field rename handling and centralize conversion between bukkit and string more c024a5039 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent 741b84480 PR-1390: Improve internal handling of damage sources 0364df4e1 SPIGOT-7657: Error when loading angry entities
2024-05-11 23:48:37 +02:00
index 114e84b485a6f05eac66083d8fd71028018d57ea..3c22799d36f07e349df207ce8a39236bbf6c17bf 100644
2024-03-20 22:33:34 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFireball.java
Updated Upstream (Bukkit/CraftBukkit) (#10691) Updated Upstream (Bukkit/CraftBukkit) 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: fa99e752 PR-1007: Add ItemMeta#getAsComponentString() 94a91782 Fix copy-pasted BlockType.Typed documentation 9b34ac8c Largely restore deprecated PotionData API 51a6449b PR-1008: Deprecate ITEMS_TOOLS, removed in 1.20.5 702d15fe Fix Javadoc reference 42f6cdf4 PR-919: Add internal ItemType and BlockType, delegate Material methods to them 237bb37b SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 035ea146 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 8c7880fb PR-1004: Improve field rename handling and centralize conversion between bukkit and string more 87c90e93 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent CraftBukkit Changes: 4af0f22e8 SPIGOT-7664: Item meta should prevail over block states c2ccc46ec SPIGOT-7666: Fix access to llama and horse special slot 124ac66d7 SPIGOT-7665: Fix ThrownPotion#getEffects() implementation only bringing custom effects 66f1f439a Restore null page behaviour of signed books even though not strictly allowed by API 6118e5398 Fix regression listening to minecraft:brand custom payloads c1a26b366 Fix unnecessary and potential not thread-safe chat visibility check 12360a7ec Remove unused imports 147b098b4 PR-1397: Add ItemMeta#getAsComponentString() 428aefe0e Largely restore deprecated PotionData API afe5b5ee9 PR-1275: Add internal ItemType and BlockType, delegate Material methods to them 8afeafa7d SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 4e7d749d4 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 441880757 Support both entity_data and bucket_entity_data on axolotl/fish buckets 0e22fdd1e Fix custom direct BlockState being not correctly set in DamageSource f2182ed47 SPIGOT-7659: TropicalFishBucketMeta should use BUCKET_ENTITY_DATA 2a6207fe1 PR-1393: Improve field rename handling and centralize conversion between bukkit and string more c024a5039 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent 741b84480 PR-1390: Improve internal handling of damage sources 0364df4e1 SPIGOT-7657: Error when loading angry entities
2024-05-11 23:48:37 +02:00
@@ -74,6 +74,20 @@ public class CraftFireball extends AbstractProjectile implements Fireball {
2024-03-20 22:33:34 +01:00
this.update(); // SPIGOT-6579
}
+ // Paper start - Expose power on fireball projectiles
+ @Override
+ public void setPower(final Vector power) {
+ this.getHandle().xPower = power.getX();
+ this.getHandle().yPower = power.getY();
+ this.getHandle().zPower = power.getZ();
+ }
+
+ @Override
+ public Vector getPower() {
+ return new Vector(this.getHandle().xPower, this.getHandle().yPower, this.getHandle().zPower);
+ }
+ // Paper end - Expose power on fireball projectiles
+
@Override
public AbstractHurtingProjectile getHandle() {
return (AbstractHurtingProjectile) this.entity;
2021-06-22 09:44:02 +02:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java
2023-10-27 01:34:58 +02:00
index 17164811bbcf983bef62c47bc99330074762267b..c455deb4fd2a7684bcc01a8212c362a2375c190b 100644
2021-06-22 09:44:02 +02:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java
@@ -113,4 +113,41 @@ public class CraftFox extends CraftAnimals implements Fox {
public boolean isFaceplanted() {
return this.getHandle().isFaceplanted();
2021-06-22 09:44:02 +02:00
}
+
2021-06-22 09:44:02 +02:00
+ // Paper start - Add more fox behavior API
+ @Override
+ public void setInterested(boolean interested) {
2021-08-27 20:16:41 +02:00
+ this.getHandle().setIsInterested(interested);
2021-06-22 09:44:02 +02:00
+ }
+
+ @Override
+ public boolean isInterested() {
2021-08-27 20:16:41 +02:00
+ return this.getHandle().isInterested();
2021-06-22 09:44:02 +02:00
+ }
+
+ @Override
+ public void setLeaping(boolean leaping) {
2021-08-27 20:16:41 +02:00
+ this.getHandle().setIsPouncing(leaping);
2021-06-22 09:44:02 +02:00
+ }
+
+ @Override
+ public boolean isLeaping() {
2021-08-27 20:16:41 +02:00
+ return this.getHandle().isPouncing();
2021-06-22 09:44:02 +02:00
+ }
+
+ @Override
+ public void setDefending(boolean defending) {
2021-08-27 20:16:41 +02:00
+ this.getHandle().setDefending(defending);
2021-06-22 09:44:02 +02:00
+ }
+
+ @Override
+ public boolean isDefending() {
2021-08-27 20:16:41 +02:00
+ return this.getHandle().isDefending();
2021-06-22 09:44:02 +02:00
+ }
+
+ @Override
+ public void setFaceplanted(boolean faceplanted) {
2021-08-27 20:16:41 +02:00
+ this.getHandle().setFaceplanted(faceplanted);
2021-06-22 09:44:02 +02:00
+ }
+ // Paper end - Add more fox behavior API
}
2022-03-06 22:20:38 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java
2023-10-27 01:34:58 +02:00
index 2cec61a1bb050c1ef81c5fc3d0afafe9ff29d459..97fa4e1e70203194bd939618b2fad92665af6d59 100644
2022-03-06 22:20:38 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java
@@ -28,4 +28,17 @@ public class CraftGhast extends CraftFlying implements Ghast, CraftEnemy {
public void setCharging(boolean flag) {
this.getHandle().setCharging(flag);
2022-03-06 22:20:38 +01:00
}
+
+ // Paper start
+ @Override
+ public int getExplosionPower() {
+ return this.getHandle().getExplosionPower();
+ }
+
+ @Override
+ public void setExplosionPower(int explosionPower) {
+ com.google.common.base.Preconditions.checkArgument(explosionPower >= 0 && explosionPower <= 127, "The explosion power has to be between 0 and 127");
+ this.getHandle().setExplosionPower(explosionPower);
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
index 1cfc3d18fb785410f5acfcf3c338776858efe25a..ea929ca51bd35447da4bdb42379dfc12ea2aae67 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java
2024-04-24 16:29:12 +02:00
@@ -906,14 +906,29 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity {
@Override
public boolean isInvisible() {
- return this.getHandle().isInvisible();
+ return super.isInvisible(); // Paper - move invisibility up to Entity - diff on change
}
@Override
public void setInvisible(boolean invisible) {
- this.getHandle().persistentInvisibility = invisible;
- this.getHandle().setSharedFlag(5, invisible);
+ super.setInvisible(invisible); // Paper - move invisibility up to Entity
}
+ // Paper start
+ @Override
+ public float getSidewaysMovement() {
+ return this.getHandle().xxa;
+ }
+
+ @Override
+ public float getForwardsMovement() {
+ return this.getHandle().zza;
+ }
+
+ @Override
+ public float getUpwardsMovement() {
+ return this.getHandle().yya;
+ }
+ // Paper end
// Paper start
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
Updated Upstream (Bukkit/CraftBukkit) (#10691) Updated Upstream (Bukkit/CraftBukkit) 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: fa99e752 PR-1007: Add ItemMeta#getAsComponentString() 94a91782 Fix copy-pasted BlockType.Typed documentation 9b34ac8c Largely restore deprecated PotionData API 51a6449b PR-1008: Deprecate ITEMS_TOOLS, removed in 1.20.5 702d15fe Fix Javadoc reference 42f6cdf4 PR-919: Add internal ItemType and BlockType, delegate Material methods to them 237bb37b SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 035ea146 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 8c7880fb PR-1004: Improve field rename handling and centralize conversion between bukkit and string more 87c90e93 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent CraftBukkit Changes: 4af0f22e8 SPIGOT-7664: Item meta should prevail over block states c2ccc46ec SPIGOT-7666: Fix access to llama and horse special slot 124ac66d7 SPIGOT-7665: Fix ThrownPotion#getEffects() implementation only bringing custom effects 66f1f439a Restore null page behaviour of signed books even though not strictly allowed by API 6118e5398 Fix regression listening to minecraft:brand custom payloads c1a26b366 Fix unnecessary and potential not thread-safe chat visibility check 12360a7ec Remove unused imports 147b098b4 PR-1397: Add ItemMeta#getAsComponentString() 428aefe0e Largely restore deprecated PotionData API afe5b5ee9 PR-1275: Add internal ItemType and BlockType, delegate Material methods to them 8afeafa7d SPIGOT-1166, SPIGOT-7647: Expose Damager BlockState in EntityDamageByBlockEvent 4e7d749d4 SPIGOT-6993: Allow #setVelocity to change the speed of a fireball and add a note to #setDirection about it 441880757 Support both entity_data and bucket_entity_data on axolotl/fish buckets 0e22fdd1e Fix custom direct BlockState being not correctly set in DamageSource f2182ed47 SPIGOT-7659: TropicalFishBucketMeta should use BUCKET_ENTITY_DATA 2a6207fe1 PR-1393: Improve field rename handling and centralize conversion between bukkit and string more c024a5039 SPIGOT-7650: Add DamageSource for EntityDeathEvent and PlayerDeathEvent 741b84480 PR-1390: Improve internal handling of damage sources 0364df4e1 SPIGOT-7657: Error when loading angry entities
2024-05-11 23:48:37 +02:00
index bf297388c75521266c93580a9caafe6bad70ab45..351f42842b780d053cd2e5bad9ae299449141b10 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java
@@ -58,4 +58,36 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys
public String toString() {
return "CraftLlama";
}
+
+ // Paper start
+ @Override
+ public boolean inCaravan() {
+ return this.getHandle().inCaravan();
+ }
+
+ @Override
+ public void joinCaravan(@org.jetbrains.annotations.NotNull Llama llama) {
+ this.getHandle().joinCaravan(((CraftLlama) llama).getHandle());
+ }
+
+ @Override
+ public void leaveCaravan() {
+ this.getHandle().leaveCaravan();
+ }
+
+ @Override
+ public boolean hasCaravanTail() {
+ return this.getHandle().hasCaravanTail();
+ }
+
+ @Override
+ public Llama getCaravanHead() {
+ return this.getHandle().getCaravanHead() == null ? null : (Llama) this.getHandle().getCaravanHead().getBukkitEntity();
+ }
+
+ @Override
+ public Llama getCaravanTail() {
+ return this.getHandle().caravanTail == null ? null : (Llama) this.getHandle().caravanTail.getBukkitEntity();
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java
2023-10-27 01:34:58 +02:00
index 17f5684cba9d3ed22d9925d1951520cc4751dfe2..3a3563a1bdbc0d84d973b3a04b50b78b4bc3d379 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java
@@ -33,4 +33,20 @@ public final class CraftMinecartHopper extends CraftMinecartContainer implements
public void setEnabled(boolean enabled) {
2023-10-27 01:34:58 +02:00
((MinecartHopper) this.getHandle()).setEnabled(enabled);
}
+ // Paper start
+ @Override
+ public net.minecraft.world.entity.vehicle.MinecartHopper getHandle() {
+ return (net.minecraft.world.entity.vehicle.MinecartHopper) super.getHandle();
+ }
+
+ @Override
+ public int getPickupCooldown() {
2023-03-15 00:10:18 +01:00
+ throw new UnsupportedOperationException("Hopper minecarts don't have cooldowns");
+ }
+
+ @Override
+ public void setPickupCooldown(int cooldown) {
2023-03-15 00:10:18 +01:00
+ throw new UnsupportedOperationException("Hopper minecarts don't have cooldowns");
+ }
2023-11-11 22:17:36 +01:00
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
2024-04-24 16:29:12 +02:00
index 60d09655c5b8b9ff289291ee6badfb5aadf8533e..fb29afb6517b009b81285adc9e6dca2eb7f74aee 100644
2023-11-11 22:17:36 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMob.java
2024-04-24 16:29:12 +02:00
@@ -145,4 +145,16 @@ public abstract class CraftMob extends CraftLivingEntity implements Mob {
2023-11-11 22:17:36 +01:00
return getHandle().getMaxHeadXRot();
}
// Paper end
+
+ // Paper start
+ @Override
+ public boolean isAggressive() {
+ return this.getHandle().isAggressive();
+ }
+
+ @Override
+ public void setAggressive(boolean aggressive) {
+ this.getHandle().setAggressive(aggressive);
+ }
+ // Paper end
}
2022-01-18 00:23:44 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java
index 5467e4a74b70ff57b49d9e6bc686c493178f8511..01d104d91de9e1319d27e39d3f474318c7809486 100644
2022-01-18 00:23:44 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java
@@ -41,6 +41,38 @@ public class CraftPanda extends CraftAnimals implements Panda {
2022-01-18 00:23:44 +01:00
this.getHandle().setHiddenGene(CraftPanda.toNms(gene));
}
2022-01-18 00:23:44 +01:00
+ // Paper start - Panda API
+ @Override
+ public void setSneezeTicks(int ticks) {
+ this.getHandle().setSneezeCounter(ticks);
+ }
+
+ @Override
+ public int getSneezeTicks() {
+ return this.getHandle().getSneezeCounter();
+ }
+
+ @Override
+ public void setEatingTicks(int ticks) {
+ this.getHandle().setEatCounter(ticks);
+ }
+
+ @Override
+ public int getEatingTicks() {
+ return this.getHandle().getEatCounter();
+ }
+
+ @Override
+ public void setUnhappyTicks(int ticks) {
+ this.getHandle().setUnhappyCounter(ticks);
+ }
+
+ @Override
+ public Gene getCombinedGene() {
+ return CraftPanda.fromNms(this.getHandle().getVariant());
+ }
2022-01-18 00:23:44 +01:00
+ // Paper end - Panda API
+
@Override
public boolean isRolling() {
return this.getHandle().isRolling();
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
index 9304e201db1ec96d0916aa8ea781f3e4bc7991e6..8338effd39b1709dbe578e247710a8e58d83e3aa 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java
@@ -44,5 +44,25 @@ public class CraftPhantom extends CraftFlying implements Phantom, CraftEnemy {
public void setShouldBurnInDay(boolean shouldBurnInDay) {
getHandle().setShouldBurnInDay(shouldBurnInDay);
}
+
+ @Override
+ public org.bukkit.Location getAnchorLocation() {
+ net.minecraft.core.BlockPos pos = this.getHandle().anchorPoint;
+ if (pos == null) {
+ return null;
+ }
+
2023-06-08 22:56:13 +02:00
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), pos);
+ }
+
+ @Override
+ public void setAnchorLocation(org.bukkit.Location location) {
+ net.minecraft.core.BlockPos pos = null;
+ if (location != null) {
+ pos = io.papermc.paper.util.MCUtil.toBlockPosition(location);
+ }
+
+ this.getHandle().anchorPoint = pos;
+ }
// Paper end
}
2022-03-19 15:30:16 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java
index f5ecb8c1dc92e5a4b123effd2859123b17a586d3..5124a383b60b2c8de89fa992547d0c61db760c21 100644
2022-03-19 15:30:16 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java
2023-09-14 12:54:43 +02:00
@@ -84,4 +84,37 @@ public class CraftPiglin extends CraftPiglinAbstract implements Piglin, com.dest
2022-03-19 15:30:16 +01:00
public String toString() {
return "CraftPiglin";
}
+ // Paper start
+ @Override
+ public void setChargingCrossbow(boolean chargingCrossbow) {
+ this.getHandle().setChargingCrossbow(chargingCrossbow);
+ }
+
+ @Override
+ public boolean isChargingCrossbow() {
+ return this.getHandle().isChargingCrossbow();
+ }
2023-09-14 12:54:43 +02:00
+
+ @Override
+ public void setDancing(boolean dancing) {
+ if (dancing) {
+ this.getHandle().getBrain().setMemory(net.minecraft.world.entity.ai.memory.MemoryModuleType.DANCING, true);
+ this.getHandle().getBrain().setMemory(net.minecraft.world.entity.ai.memory.MemoryModuleType.CELEBRATE_LOCATION, this.getHandle().getOnPos());
+ } else {
+ this.getHandle().getBrain().eraseMemory(net.minecraft.world.entity.ai.memory.MemoryModuleType.DANCING);
+ this.getHandle().getBrain().eraseMemory(net.minecraft.world.entity.ai.memory.MemoryModuleType.CELEBRATE_LOCATION);
+ }
+ }
+
+ @Override
+ public void setDancing(long duration) {
+ this.getHandle().getBrain().setMemoryWithExpiry(net.minecraft.world.entity.ai.memory.MemoryModuleType.DANCING, true, duration);
+ this.getHandle().getBrain().setMemoryWithExpiry(net.minecraft.world.entity.ai.memory.MemoryModuleType.CELEBRATE_LOCATION, this.getHandle().getOnPos(), duration);
+ }
+
+ @Override
+ public boolean isDancing() {
+ return this.getHandle().isDancing();
+ }
2022-03-19 15:30:16 +01:00
+ // Paper end
}
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java
2023-10-27 01:34:58 +02:00
index c7aec6f28e5d3546235b30f6b1112440a76163c5..fe075cfdf3097d6cb768e71b8cc360abb8eaf367 100644
2022-03-11 15:24:45 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java
@@ -17,4 +17,16 @@ public class CraftPolarBear extends CraftAnimals implements PolarBear {
public String toString() {
return "CraftPolarBear";
2022-03-11 15:24:45 +01:00
}
+
+ // Paper start
+ @Override
+ public boolean isStanding() {
+ return this.getHandle().isStanding();
+ }
+
+ @Override
+ public void setStanding(boolean standing) {
+ this.getHandle().setStanding(standing);
+ }
2022-12-10 01:56:13 +01:00
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java
index 6b48b117a9cba12aae055c0ea981dfb5bc03a86e..519ef701a7d6534f7cb516f6296b95ee521f661d 100644
2022-12-10 01:56:13 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftRabbit.java
@@ -29,4 +29,15 @@ public class CraftRabbit extends CraftAnimals implements Rabbit {
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9440) 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: 01aa02eb PR-858: Add LivingEntity#playHurtAnimation() 9421320f PR-884: Refinements to new ban API for improved compatibility and correctness 37a60b45 SPIGOT-6455, SPIGOT-7030, PR-750: Improve ban API 4eeb174b All smithing inventories are now the new smithing inventory f2bb168e PR-880: Add methods to get/set FallingBlock CancelDrop e7a807fa PR-879: Add Player#sendHealthUpdate() 692b8e96 SPIGOT-7370: Remove float value conversion in plugin.yml 2d033390 SPIGOT-7403: Add direct API for waxed signs 16a08373 PR-876: Add missing Raider API and 'no action ticks' CraftBukkit Changes: b60a95c8c PR-1189: Add LivingEntity#playHurtAnimation() 95c335c63 PR-1226: Fix VehicleEnterEvent not being called for certain entities 0a0fc3bee PR-1227: Refinements to new ban API for improved compatibility and correctness 0d0b1e5dc Revert bad change to PathfinderGoalSit causing all cats to sit 648196070 SPIGOT-6455, SPIGOT-7030, PR-1054: Improve ban API 31fe848d6 All smithing inventories are now the new smithing inventory 9a919a143 SPIGOT-7416: SmithItemEvent not firing in Smithing Table 9f64f0d22 PR-1221: Add methods to get/set FallingBlock CancelDrop 3be9ac171 PR-1220: Add Player#sendHealthUpdate() c1279f775 PR-1209: Clean up various patches c432e4397 Fix Raider#setCelebrating() implementation 504d96665 SPIGOT-7403: Add direct API for waxed signs c68c1f1b3 PR-1216: Add missing Raider API and 'no action ticks' 85b89c3dd Increase outdated build delay Spigot Changes: 9ebce8af Rebuild patches 64b565e6 Rebuild patches
2023-07-04 10:22:56 +02:00
public void setRabbitType(Type type) {
this.getHandle().setVariant(net.minecraft.world.entity.animal.Rabbit.Variant.values()[type.ordinal()]);
2022-12-10 01:56:13 +01:00
}
+ // Paper start
+ @Override
+ public void setMoreCarrotTicks(int ticks) {
+ this.getHandle().moreCarrotTicks = ticks;
+ }
+
+ @Override
+ public int getMoreCarrotTicks() {
+ return this.getHandle().moreCarrotTicks;
+ }
+ // Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftRavager.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftRavager.java
index cae59f77c704a5b9515dc4917ed5fdc89631ecfb..09796ce15658e3f7c223a265a547a51ee729ed40 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftRavager.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftRavager.java
@@ -18,4 +18,35 @@ public class CraftRavager extends CraftRaider implements Ravager {
public String toString() {
return "CraftRavager";
}
+ // Paper start - Missing Entity Behavior
+ @Override
+ public int getAttackTicks() {
+ return this.getHandle().getAttackTick();
+ }
+
+ @Override
+ public void setAttackTicks(int ticks) {
+ this.getHandle().attackTick = ticks;
+ }
+
+ @Override
+ public int getStunnedTicks() {
+ return this.getHandle().getStunnedTick();
+ }
+
+ @Override
+ public void setStunnedTicks(int ticks) {
+ this.getHandle().stunnedTick = ticks;
+ }
+
+ @Override
+ public int getRoarTicks() {
+ return this.getHandle().getRoarTick();
+ }
+
+ @Override
+ public void setRoarTicks(int ticks) {
+ this.getHandle().roarTick = ticks;
+ }
2022-03-11 15:24:45 +01:00
+ // Paper end
}
2022-11-26 03:21:40 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftSalmon.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftSalmon.java
index b8140aa25a25870259b5644091c6643da1e14b54..d4d8ce60098c74508e2de9541bf6534988779764 100644
2022-11-26 03:21:40 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftSalmon.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftSalmon.java
@@ -3,7 +3,7 @@ package org.bukkit.craftbukkit.entity;
import org.bukkit.craftbukkit.CraftServer;
2022-11-26 03:21:40 +01:00
import org.bukkit.entity.Salmon;
-public class CraftSalmon extends CraftFish implements Salmon {
+public class CraftSalmon extends io.papermc.paper.entity.PaperSchoolableFish implements Salmon { // Paper - Schooling Fish API
public CraftSalmon(CraftServer server, net.minecraft.world.entity.animal.Salmon entity) {
super(server, entity);
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java
index 3f32c683ddc6999b89f2e4051eb6ae784b296b8f..dac3d34677688ac560bc1be2087a08479ef71b87 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTNTPrimed.java
@@ -67,4 +67,17 @@ public class CraftTNTPrimed extends CraftEntity implements TNTPrimed {
this.getHandle().owner = null;
}
}
+
+ // Paper start
+ @Override
+ public void setBlockData(org.bukkit.block.data.BlockData data) {
+ com.google.common.base.Preconditions.checkArgument(data != null, "The visual block data of this tnt cannot be null. To reset it just set to the TNT default block data");
+ this.getHandle().setBlockState(((org.bukkit.craftbukkit.block.data.CraftBlockData) data).getState());
+ }
+
+ @Override
+ public org.bukkit.block.data.BlockData getBlockData() {
+ return org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.getHandle().getBlockState());
+ }
+ // Paper end
}
2022-12-23 21:50:32 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTadpole.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTadpole.java
2023-10-27 01:34:58 +02:00
index 451a9bfd9b9b6945e224f1bb05c7951ed934b4e3..d7c6a0bbc5671ea8f2488230c94df5146a1e98b9 100644
2022-12-23 21:50:32 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTadpole.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTadpole.java
@@ -28,4 +28,15 @@ public class CraftTadpole extends CraftFish implements org.bukkit.entity.Tadpole
2022-12-23 21:50:32 +01:00
public void setAge(int age) {
this.getHandle().age = age;
}
+ // Paper start
+ @Override
+ public void setAgeLock(boolean lock) {
+ this.getHandle().ageLocked = lock;
+ }
+
+ @Override
+ public boolean getAgeLock() {
+ return this.getHandle().ageLocked;
+ }
+ // Paper end
}
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java
2024-04-24 16:29:12 +02:00
index 33d6e8121755ad6cddacb4fc69e795f9831c27bd..e374b9f40eddca13b30855d25a2030f8df98138f 100644
2022-03-11 15:24:45 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java
2024-04-24 16:29:12 +02:00
@@ -31,4 +31,27 @@ public class CraftTrident extends CraftAbstractArrow implements Trident {
public String toString() {
return "CraftTrident";
2022-03-11 15:24:45 +01:00
}
+
+ // Paper start
+ @Override
+ public boolean hasGlint() {
+ return this.getHandle().isFoil();
+ }
+
+ @Override
+ public void setGlint(boolean glint) {
+ this.getHandle().setFoil(glint);
+ }
+
+ @Override
+ public int getLoyaltyLevel() {
+ return this.getHandle().getLoyalty();
+ }
+
+ @Override
+ public void setLoyaltyLevel(int loyaltyLevel) {
+ com.google.common.base.Preconditions.checkArgument(loyaltyLevel >= 0 && loyaltyLevel <= 127, "The loyalty level has to be between 0 and 127");
+ this.getHandle().setLoyalty((byte) loyaltyLevel);
+ }
+ // Paper end
}
2022-11-26 03:21:40 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java
2023-10-27 01:34:58 +02:00
index e3bde6d1c0e03407af1382a61748470063bb2e18..9e53c30801c700719c78c0fd521fd615c94e02c8 100644
2022-11-26 03:21:40 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTropicalFish.java
@@ -7,7 +7,7 @@ import org.bukkit.craftbukkit.CraftServer;
2022-11-26 03:21:40 +01:00
import org.bukkit.entity.TropicalFish;
import org.bukkit.entity.TropicalFish.Pattern;
-public class CraftTropicalFish extends CraftFish implements TropicalFish {
+public class CraftTropicalFish extends io.papermc.paper.entity.PaperSchoolableFish implements TropicalFish { // Paper - Schooling Fish API
public CraftTropicalFish(CraftServer server, net.minecraft.world.entity.animal.TropicalFish entity) {
super(server, entity);
2022-03-19 15:30:16 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java
2023-10-27 01:34:58 +02:00
index 1cfbe9c476f4a254edf3edf4b70696bbaba78558..e9ec3455eabc473e104b5342a615a38c1ac25a4f 100644
2022-03-19 15:30:16 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java
@@ -29,6 +29,26 @@ public class CraftVex extends CraftMonster implements Vex {
2022-03-19 15:30:16 +01:00
public void setSummoner(org.bukkit.entity.Mob summoner) {
getHandle().setOwner(summoner == null ? null : ((CraftMob) summoner).getHandle());
}
+
+ @Override
+ public boolean hasLimitedLifetime() {
+ return this.getHandle().hasLimitedLife;
+ }
+
+ @Override
+ public void setLimitedLifetime(boolean hasLimitedLifetime) {
+ this.getHandle().hasLimitedLife = hasLimitedLifetime;
+ }
+
+ @Override
+ public int getLimitedLifetimeTicks() {
+ return this.getHandle().limitedLifeTicks;
+ }
+
+ @Override
+ public void setLimitedLifetimeTicks(int ticks) {
+ this.getHandle().limitedLifeTicks = ticks;
+ }
// Paper end
@Override
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java
index e2a0c11867abee6add8775259c54f2052de7b1ad..3aa23d9f22d5cd22231293fd7d1ca4cb79eb7cb3 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java
@@ -60,13 +60,20 @@ public class CraftVillagerZombie extends CraftZombie implements ZombieVillager {
@Override
public void setConversionTime(int time) {
+ // Paper start - missing entity behaviour api - converting without entity event
+ this.setConversionTime(time, true);
+ }
+
+ @Override
+ public void setConversionTime(int time, boolean broadcastEntityEvent) {
+ // Paper end - missing entity behaviour api - converting without entity event
if (time < 0) {
this.getHandle().villagerConversionTime = -1;
this.getHandle().getEntityData().set(net.minecraft.world.entity.monster.ZombieVillager.DATA_CONVERTING_ID, false);
this.getHandle().conversionStarter = null;
this.getHandle().removeEffect(MobEffects.DAMAGE_BOOST, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.CONVERSION);
} else {
- this.getHandle().startConverting(null, time);
+ this.getHandle().startConverting(null, time, broadcastEntityEvent); // Paper - missing entity behaviour api - converting without entity event
}
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java
2023-10-27 01:34:58 +02:00
index 0e597394a3dd08f022614fc9777302fea581eb55..3cceefa0d6278924a19641a49bdf16bcdacb2233 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java
@@ -49,5 +49,25 @@ public class CraftWanderingTrader extends CraftAbstractVillager implements Wande
public boolean canDrinkMilk() {
return getHandle().canDrinkMilk;
}
+
+ @Override
+ public org.bukkit.Location getWanderingTowards() {
+ net.minecraft.core.BlockPos pos = this.getHandle().getWanderTarget();
+ if (pos == null) {
+ return null;
+ }
+
2023-06-08 22:56:13 +02:00
+ return io.papermc.paper.util.MCUtil.toLocation(this.getHandle().level(), pos);
+ }
+
+ @Override
+ public void setWanderingTowards(org.bukkit.Location location) {
+ net.minecraft.core.BlockPos pos = null;
+ if (location != null) {
+ pos = io.papermc.paper.util.MCUtil.toBlockPosition(location);
+ }
+
+ this.getHandle().setWanderTarget(pos);
+ }
// Paper end
}
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java
2023-10-27 01:34:58 +02:00
index 794e4fe0a3fbd967f665b2707865c15491370c76..c284eb96a1e330078076cbe61f0f6e2ff4ed89bd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java
@@ -37,6 +37,13 @@ public class CraftWarden extends CraftMonster implements org.bukkit.entity.Warde
return this.getHandle().getAngerManagement().getActiveAnger(((CraftEntity) entity).getHandle());
}
+ // Paper start
+ @Override
+ public int getHighestAnger() {
+ return this.getHandle().getAngerManagement().getActiveAnger(null);
+ }
+ // Paper end
+
@Override
public void increaseAnger(Entity entity, int increase) {
Preconditions.checkArgument(entity != null, "Entity cannot be null");
2022-03-11 15:24:45 +01:00
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
2023-10-27 01:34:58 +02:00
index 1113533d281ed159bb735040fb1f913482debf3a..7a8ce6956db56061af93ba9761f5d1057a90bc49 100644
2022-03-11 15:24:45 +01:00
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java
@@ -67,4 +67,36 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok
Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9188) * Updated Upstream (Bukkit/CraftBukkit/Spigot) 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: 2fcba9b2 SPIGOT-7347: Add missing documentation and details to ShapedRecipe c278419d PR-854: Move getHighestBlockYAt methods from World to RegionAccessor 201399fb PR-853: Add API for directly setting Display transformation matrices ecfa559a PR-849: Add InventoryView#setTitle 653d7edb SPIGOT-519: Add TNTPrimeEvent 22fccc09 PR-846: Add method to get chunk load level a070a52c PR-844: Add methods to convert Vector to and from JOML vectors cc7111fe PR-276: Add accessors to Wither's invulnerability ticks 777d24e9 SPIGOT-7209: Accessors and events for player's exp cooldown ccb2d01b SPIGOT-6308: Deprecate the location name property of map items cd04a31b PR-780: Add PlayerSpawnChangeEvent 7d1f5b64 SPIGOT-6780: Improve documentation for World#spawnFallingBlock 5696668a SPIGOT-6885: Add test and easier to debug code for reference in yaml configuration comments 2e13cff7 PR-589: Expand the FishHook API 2c7d3da5 PR-279: Minor edits to various Javadocs CraftBukkit Changes: 01b2e1af4 SPIGOT-7346: Disallow players from executing commands after disconnecting 7fe5ee022 PR-1186: Move getHighestBlockYAt methods from World to RegionAccessor bcc85ef67 PR-1185: Add API for directly setting Display transformation matrices a7cfc778f PR-1176: Add InventoryView#setTitle 563d42226 SPIGOT-519: Add TNTPrimeEvent ccbc6abca Add test for Chunk.LoadLevel mirroring 2926e0513 PR-1171: Add method to get chunk load level 63cad7f84 PR-375: Add accessors to Wither's invulnerability ticks bfd8b1ac8 SPIGOT-7209: Accessors and events for player's exp cooldown f92a41c39 PR-1181: Consolidate Location conversion code 10f866759 SPIGOT-6308: Deprecate the location name property of map items 82f7b658a PR-1095: Add PlayerSpawnChangeEvent b421af7e4 PR-808: Expand the FishHook API 598ad7b3f Increase outdated build delay Spigot Changes: d1bd3bd2 Rebuild patches e4265cc8 SPIGOT-7297: Entity Tracking Range option for Display entities * Work around javac bug * Call PlayerSpawnChangeEvent * Updated Upstream (Bukkit/CraftBukkit/Spigot) 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: 2fcba9b2 SPIGOT-7347: Add missing documentation and details to ShapedRecipe c278419d PR-854: Move getHighestBlockYAt methods from World to RegionAccessor 201399fb PR-853: Add API for directly setting Display transformation matrices CraftBukkit Changes: 01b2e1af4 SPIGOT-7346: Disallow players from executing commands after disconnecting 7fe5ee022 PR-1186: Move getHighestBlockYAt methods from World to RegionAccessor bcc85ef67 PR-1185: Add API for directly setting Display transformation matrices Spigot Changes: 7da74dae Rebuild patches
2023-05-12 13:10:08 +02:00
this.getHandle().setInvulnerableTicks(ticks);
2022-03-11 15:24:45 +01:00
}
+
+ // Paper start
+ @Override
+ public boolean isCharged() {
+ return getHandle().isPowered();
+ }
+
+ @Override
+ public int getInvulnerableTicks() {
+ return getHandle().getInvulnerableTicks();
+ }
+
+ @Override
+ public void setInvulnerableTicks(int ticks) {
+ getHandle().setInvulnerableTicks(ticks);
+ }
+
+ @Override
+ public boolean canTravelThroughPortals() {
+ return getHandle().canChangeDimensions();
+ }
+
+ @Override
+ public void setCanTravelThroughPortals(boolean value) {
+ getHandle().setCanTravelThroughPortals(value);
+ }
+
+ @Override
+ public void enterInvulnerabilityPhase() {
+ this.getHandle().makeInvulnerable();
+ }
2022-03-11 15:24:45 +01:00
+ // Paper end
}