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 Behavior API Co-authored-by: Nassim Jahnke Co-authored-by: Jake Potrebic Co-authored-by: William Blake Galbreath diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java index 66293e620dcf2c7ee3e2fc91f8a7cf52f2950de1..f2243f65cdf0e4b327e8597dfefe5b2de8912cef 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java @@ -540,11 +540,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { 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); } 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 index 04a119e6641898454253e2478bc1b4dff181b5ee..a8da601b8342aa6e4902b452eb588c76c98a7adf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java @@ -663,6 +663,14 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, } + // Paper Start - Horse API + public void setMouthOpen(boolean open) { + this.setFlag(FLAG_OPEN_MOUTH, open); + } + public boolean isMouthOpen() { + return this.getFlag(FLAG_OPEN_MOUTH); + } + // Paper End - Horse API private void openMouth() { if (!this.level.isClientSide) { this.mouthCounter = 1; @@ -675,6 +683,11 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, this.setFlag(16, eatingGrass); } + // Paper Start - Horse API + public void setForceStanding(boolean standing) { + this.setFlag(FLAG_STANDING, standing); + } + // Paper End - Horse API 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 index 5ffae9d3be22b5e78645da57a6bd0e7350749ef1..9aec9f80c564fa3ae03e445423d9e50afc45f837 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 @@ -67,7 +67,7 @@ public class Llama extends AbstractChestedHorse implements RangedAttackMob { @Nullable private Llama caravanHead; @Nullable - private Llama caravanTail; + public Llama caravanTail; // Paper public Llama(EntityType type, Level world) { super(type, world); 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 index 1fc862a3b5d40a45cf91703051bcfb06ec1b177a..02d7cd9cd27ff9254c3e99e3e94309a8cb8b243d 100644 --- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java +++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java @@ -84,6 +84,11 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob return entityliving.getMobType() != MobType.UNDEAD && entityliving.attackable(); }; 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 type, Level world) { super(type, world); @@ -601,7 +606,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob @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 index e0e32528ed9f2f494b5ee2079c3167021f2e84c4..f22e615dba31619c97bf58930da060476a52facf 100644 --- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java +++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java @@ -433,6 +433,16 @@ public class EnderMan extends Monster implements NeutralMob { 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; diff --git a/src/main/java/net/minecraft/world/entity/monster/Ghast.java b/src/main/java/net/minecraft/world/entity/monster/Ghast.java index 1f3506d38894fea224f3b2f125b45c3b68d705c7..bb2cb17e4e5ce142eeec18951c8948e3d6b3209c 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Ghast.java +++ b/src/main/java/net/minecraft/world/entity/monster/Ghast.java @@ -66,6 +66,12 @@ public class Ghast extends FlyingMob implements Enemy { 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 index e93a2634cd80cd4f1caf6bd60e569783bc6b577c..fb0a77b4cf1ba47c73c00993bd9b7454240fe5d6 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java @@ -197,6 +197,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); @@ -204,7 +210,7 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { this.removeEffect(MobEffects.WEAKNESS, org.bukkit.event.entity.EntityPotionEffectEvent.Cause.CONVERSION); 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 - this.level.broadcastEntityEvent(this, (byte) 16); + if (broadcastEntityEvent) this.level.broadcastEntityEvent(this, (byte) 16); // Paper - missing entity behaviour api - converting without entity event } @Override diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java index c5b82dcf6c9da9d6699f699c3e13d9b949128cc8..d890446315787b7aaa2869637e905c25c93558aa 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownTrident.java @@ -105,6 +105,20 @@ public class ThrownTrident extends AbstractArrow { 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) { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java index 254d4f2e45d7c8f572a4368eccd84560d4d0d836..299ab868252c8f326e3a56e878c9ee230c9635dc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftAbstractHorse.java @@ -115,4 +115,36 @@ public abstract class CraftAbstractHorse extends CraftAnimals implements Abstrac 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/CraftBat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java index 3b960a832df1fe496ea036962083f1ac507a7db7..ee5534972a2b26402f29b146d1f3da69052672b0 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBat.java @@ -33,4 +33,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; + } + + return net.minecraft.server.MCUtil.toLocation(this.getHandle().getLevel(), pos); + } + + @Override + public void setTargetLocation(org.bukkit.Location location) { + net.minecraft.core.BlockPos pos = null; + if (location != null) { + pos = net.minecraft.server.MCUtil.toBlockPosition(location); + } + + this.getHandle().targetPosition = pos; + } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java index 8ada3dfbe89c8b55d85c31c71e365af0cbf66d19..1ae8d6e819cd9d195e1bd31ccf55d2893ba00e2a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBee.java @@ -91,4 +91,42 @@ public class CraftBee extends CraftAnimals implements Bee { 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; + } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java index 37352ca3ff267d02a26ed182ce3df3ef775fa9bc..6a504f61c55d3983871f8d1c5c002c7a7b9c50ff 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftCat.java @@ -51,4 +51,25 @@ public class CraftCat extends CraftTameableAnimal implements Cat { public void setCollarColor(DyeColor color) { this.getHandle().setCollarColor(net.minecraft.world.item.DyeColor.byId(color.getWoolData())); } + // Paper Start - More cat api + @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 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java index 178328042ad62f32ca2ae14a6bcf2b694418eb8c..fd87f979ee207dac13e4028d76bdd40911509e56 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftChicken.java @@ -24,4 +24,25 @@ public class CraftChicken extends CraftAnimals implements Chicken { public EntityType getType() { return EntityType.CHICKEN; } + // 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 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java index ae669a970aa1f17ed786640de8a481364543c58e..acdc4e578d70f8121c8c6be7682ba1ecef7687cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEnderman.java @@ -39,6 +39,28 @@ public class CraftEnderman extends CraftMonster implements Enderman { 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() { return (EnderMan) entity; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java index 04976616da8c85b1278dad33ff05554aa74a6b33..75c7645fb5732c43d1da15181cf5c7ee4c3ecd6c 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEndermite.java @@ -34,4 +34,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/CraftFox.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java index f6369a1b0ea3fc64e9e7902d9da25924a0745855..fce96b67300b8808984904ee19d4e987f5235bfd 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftFox.java @@ -119,4 +119,41 @@ public class CraftFox extends CraftAnimals implements Fox { public boolean isFaceplanted() { return this.getHandle().isFaceplanted(); } + + // Paper start - Add more fox behavior API + @Override + public void setInterested(boolean interested) { + this.getHandle().setIsInterested(interested); + } + + @Override + public boolean isInterested() { + return this.getHandle().isInterested(); + } + + @Override + public void setLeaping(boolean leaping) { + this.getHandle().setIsPouncing(leaping); + } + + @Override + public boolean isLeaping() { + return this.getHandle().isPouncing(); + } + + @Override + public void setDefending(boolean defending) { + this.getHandle().setDefending(defending); + } + + @Override + public boolean isDefending() { + return this.getHandle().isDefending(); + } + + @Override + public void setFaceplanted(boolean faceplanted) { + this.getHandle().setFaceplanted(faceplanted); + } + // Paper end - Add more fox behavior API } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java index 7adda5c93e7c172ea0ba4a3f15828b5e54a283e7..fffaf4108b632ceabac4186d93b34ad0eb069a04 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftGhast.java @@ -34,4 +34,17 @@ public class CraftGhast extends CraftFlying implements Ghast { public void setCharging(boolean flag) { this.getHandle().setCharging(flag); } + + // 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/CraftLlama.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java index ae05f526f9ec70a2992ef3ee66b7f57eca2351fc..15e2c2653d7d41e8bafa0ffe1afaa733c569b2ab 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLlama.java @@ -64,4 +64,36 @@ public class CraftLlama extends CraftChestedHorse implements Llama, com.destroys public EntityType getType() { return EntityType.LLAMA; } + + // 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 index ee9648739fb39c5842063d7442df6eb5c9336d7f..569763b3c9e92a4071884f139fb1263201f80e43 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartHopper.java @@ -39,4 +39,20 @@ public final class CraftMinecartHopper extends CraftMinecartContainer implements public void setEnabled(boolean enabled) { ((MinecartHopper) 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() { + return this.getHandle().cooldownTime; + } + + @Override + public void setPickupCooldown(int cooldown) { + this.getHandle().setCooldown(cooldown); + } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java index 9569068c0a6e1eb934f063634f5d3efe674aa33d..dfd5e830fd262b72256b361e094f6769b323e9c8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartTNT.java @@ -19,4 +19,20 @@ final class CraftMinecartTNT extends CraftMinecart implements ExplosiveMinecart public EntityType getType() { return EntityType.MINECART_TNT; } + // Paper start + @Override + public net.minecraft.world.entity.vehicle.MinecartTNT getHandle() { + return (net.minecraft.world.entity.vehicle.MinecartTNT) entity; + } + + @Override + public void setFuseTicks(int fuseTicks) { + this.getHandle().fuse = fuseTicks; + } + + @Override + public int getFuseTicks() { + return this.getHandle().getFuse(); + } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java index 7fe1eae79dfac7e02f85bae9c1990467a4b0037b..b68e0dbd709085df795dc72b552ced9ac5de47e7 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMushroomCow.java @@ -28,6 +28,38 @@ public class CraftMushroomCow extends CraftCow implements MushroomCow { this.getHandle().setMushroomType(net.minecraft.world.entity.animal.MushroomCow.MushroomType.values()[variant.ordinal()]); } + // Paper start + @Override + public int getStewEffectDuration() { + return this.getHandle().effectDuration; + } + + @Override + public void setStewEffectDuration(int duration) { + this.getHandle().effectDuration = duration; + } + + @Override + public org.bukkit.potion.PotionEffectType getStewEffectType() { + net.minecraft.world.effect.MobEffect effect = this.getHandle().effect; + if (effect == null) { + return null; + } + + return org.bukkit.potion.PotionEffectType.getById(net.minecraft.world.effect.MobEffect.getId(effect)); + } + + @Override + public void setStewEffect(org.bukkit.potion.PotionEffectType type) { + net.minecraft.world.effect.MobEffect effect = null; + if (type != null) { + effect = net.minecraft.world.effect.MobEffect.byId(type.getId()); + } + + this.getHandle().effect = effect; + } + // Paper end + @Override public String toString() { return "CraftMushroomCow"; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java index ff9f711b83a8ea1bf4135751a9ba865224bce787..1f6dcad764240e15083731d017f9bb1c5c84622f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPanda.java @@ -46,6 +46,32 @@ public class CraftPanda extends CraftAnimals implements Panda { public void setHiddenGene(Gene gene) { this.getHandle().setHiddenGene(CraftPanda.toNms(gene)); } + // 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); + } + // Paper end - Panda API @Override public boolean isRolling() { diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java index dce23f3878b1588c26b6116d80e597d08070edbc..eaa0358051c4ac32cc7e6a45039374dd5c036fa2 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPhantom.java @@ -50,5 +50,25 @@ public class CraftPhantom extends CraftFlying implements Phantom { 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; + } + + return net.minecraft.server.MCUtil.toLocation(this.getHandle().getLevel(), pos); + } + + @Override + public void setAnchorLocation(org.bukkit.Location location) { + net.minecraft.core.BlockPos pos = null; + if (location != null) { + pos = net.minecraft.server.MCUtil.toBlockPosition(location); + } + + this.getHandle().anchorPoint = pos; + } // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java index aeda5fc001fe4ce55ee467240b275b6050a29f98..48d0a4e42e1b90d1323784d1284acabfe9497dd6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPiglin.java @@ -90,4 +90,15 @@ public class CraftPiglin extends CraftPiglinAbstract implements Piglin, com.dest 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(); + } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java index da1488c9cae53bd554727c850da2192adda2478a..30a0eac179c86b0fe94a2a40b5bfcd3eee01e53b 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPolarBear.java @@ -23,4 +23,16 @@ public class CraftPolarBear extends CraftAnimals implements PolarBear { public EntityType getType() { return EntityType.POLAR_BEAR; } + + // Paper start + @Override + public boolean isStanding() { + return this.getHandle().isStanding(); + } + + @Override + public void setStanding(boolean standing) { + this.getHandle().setStanding(standing); + } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftRaider.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftRaider.java index b10bcbc19362f0f8596ebcf3f3e1060486cfc74f..e24eec79402843105a13de2bb8554260908057cc 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftRaider.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftRaider.java @@ -65,4 +65,16 @@ public abstract class CraftRaider extends CraftMonster implements Raider { public Sound getCelebrationSound() { return CraftSound.getBukkit(this.getHandle().getCelebrateSound()); } + + // Paper start + @Override + public boolean isCelebrating() { + return this.getHandle().isCelebrating(); + } + + @Override + public void setCelebrating(boolean celebrating) { + this.getHandle().setCelebrating(celebrating); + } + // 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 796b784d7a50e3a4aea5c67b7cd16d288ed392b0..84899714b96a7ed31ceee10373a62c37cab2ad2a 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftRavager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftRavager.java @@ -24,4 +24,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; + } + // Paper end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java index bf5b2fd6676c4430578db4cc6c603c501cc5e349..832981b07ef5c633ef00a382f56798ee87eec0df 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftTrident.java @@ -37,4 +37,27 @@ public class CraftTrident extends CraftArrow implements Trident { public EntityType getType() { return EntityType.TRIDENT; } + + // 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 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftVex.java index 2ba16e33dd21c3c72cb12244aa78c59bf53e76d1..634a5099fb6faea03615783f57e643ad0083fa30 100644 --- 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 { 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 8a0a905f6701c6e94cbbf15793788350958fb728..2a74e6ecb4f57bc6879b37f7bc0675417223bcbf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillagerZombie.java @@ -72,13 +72,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 stop - 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((UUID) null, time); + this.getHandle().startConverting((UUID) 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 index fa7107593b20e0151d8d67104e4a92dcc697d461..d3618b2fd698552b2331f1114654b3339f3f066f 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWanderingTrader.java @@ -55,5 +55,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().wanderTarget; + if (pos == null) { + return null; + } + + return net.minecraft.server.MCUtil.toLocation(this.getHandle().getLevel(), pos); + } + + @Override + public void setWanderingTowards(org.bukkit.Location location) { + net.minecraft.core.BlockPos pos = null; + if (location != null) { + pos = net.minecraft.server.MCUtil.toBlockPosition(location); + } + + this.getHandle().wanderTarget = 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 index 7ece945d1a4fa29c7b98532788076483037f4bda..963928fc8e29b8abc2026c0b0183ebb07f0de4d1 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWarden.java @@ -43,6 +43,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"); diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java index e92355fa2042c4cf15354a11b7058cacbe996f0d..4cf3a374c9ee7c7bcf82e778aa094eb4f8463595 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWither.java @@ -61,4 +61,31 @@ public class CraftWither extends CraftMonster implements Wither, com.destroystok Entity target = this.getHandle().getLevel().getEntity(entityId); return (target != null) ? (LivingEntity) target.getBukkitEntity() : null; } + + // 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); + } + // Paper end }