mirror of
https://github.com/PurpurMC/Purpur.git
synced 2026-02-17 16:37:43 +01:00
Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@e16fefb [ci skip] add 'accepted' to Done project category (#9429) PaperMC/Paper@171ba7c Move Log4j plugins to own source set (#9428) PaperMC/Paper@4356758 Call missing BlockDispenseEvents (#8518) PaperMC/Paper@c0936a7 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#9440) PaperMC/Paper@12c9700 Fix ThrownEggHatchEvent#setHatching (#9448)
This commit is contained in:
@@ -66,7 +66,7 @@ index a0577dcae567230c12b52ed02072745513c7a4d5..23235b98907ff26afb22d37326b072ba
|
||||
|
||||
public void doTick() {
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
index 9c5a1d58acd782658a5239b324806e0ca2f969e3..3c1afd3fc37ad0540beb07798f8ecf0cd6acc80f 100644
|
||||
index bd6798a03a1349de4b5589b05cef167034250c1e..8c62cc52c2d2aaa1dd1f191114e188c22e4f40a2 100644
|
||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||
@@ -2811,6 +2811,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Tic
|
||||
@@ -79,7 +79,7 @@ index 9c5a1d58acd782658a5239b324806e0ca2f969e3..3c1afd3fc37ad0540beb07798f8ecf0c
|
||||
if ((entity instanceof Bucketable && entity instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
|
||||
entity.getEntityData().resendPossiblyDesyncedEntity(player); // Paper - The entire mob gets deleted, so resend it.
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 3caebf722bf8ebadf49da7c36170e245600ea7b5..25c190ac148ccc37904346cca859ba10f17c878c 100644
|
||||
index ccfdfb49b0bca84de676f5df4c373096455c9707..bb3edddf4c9b2a04f6b9219be741a523e4192c0c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -376,7 +376,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -91,21 +91,21 @@ index 3caebf722bf8ebadf49da7c36170e245600ea7b5..25c190ac148ccc37904346cca859ba10
|
||||
private float eyeHeight;
|
||||
public boolean isInPowderSnow;
|
||||
public boolean wasInPowderSnow;
|
||||
@@ -2957,6 +2957,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -2941,6 +2941,13 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
this.passengers = ImmutableList.copyOf(list);
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
+ if (isRidable() && this.passengers.get(0) == entity && entity instanceof Player player) {
|
||||
+ if (isRidable() && this.passengers.get(0) == passenger && passenger instanceof Player player) {
|
||||
+ onMount(player);
|
||||
+ this.rider = player;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
this.gameEvent(GameEvent.ENTITY_MOUNT, entity);
|
||||
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
|
||||
}
|
||||
return true; // CraftBukkit
|
||||
@@ -2998,6 +3005,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
}
|
||||
@@ -2981,6 +2988,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
return false;
|
||||
}
|
||||
// Spigot end
|
||||
@@ -120,7 +120,7 @@ index 3caebf722bf8ebadf49da7c36170e245600ea7b5..25c190ac148ccc37904346cca859ba10
|
||||
if (this.passengers.size() == 1 && this.passengers.get(0) == entity) {
|
||||
this.passengers = ImmutableList.of();
|
||||
} else {
|
||||
@@ -4906,4 +4921,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
@@ -4889,4 +4904,45 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource {
|
||||
return ((net.minecraft.server.level.ServerChunkCache) level.getChunkSource()).isPositionTicking(this);
|
||||
}
|
||||
// Paper end
|
||||
@@ -191,10 +191,10 @@ index 759713f7c646aaf1a918c87a2834a1d405385dad..c6a06e07f0b4bb29b5f4c70dfa53ff6d
|
||||
protected ParticleOptions getInkParticle() {
|
||||
return ParticleTypes.GLOW_SQUID_INK;
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2def8def8 100644
|
||||
index e9a31314424d9db911cd9806741222397c3072d7..3c2892b9b2ade76d9d4b081ad5bce4991df11dda 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
|
||||
@@ -219,9 +219,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -218,9 +218,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
protected int deathScore;
|
||||
public float lastHurt;
|
||||
public boolean jumping;
|
||||
@@ -207,7 +207,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2
|
||||
protected int lerpSteps;
|
||||
protected double lerpX;
|
||||
protected double lerpY;
|
||||
@@ -287,7 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -286,7 +286,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.effectsDirty = true;
|
||||
this.useItem = ItemStack.EMPTY;
|
||||
this.lastClimbablePos = Optional.empty();
|
||||
@@ -216,7 +216,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2
|
||||
this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit
|
||||
// CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor
|
||||
this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue());
|
||||
@@ -338,6 +338,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -337,6 +337,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
public static AttributeSupplier.Builder createLivingAttributes() {
|
||||
return AttributeSupplier.builder().add(Attributes.MAX_HEALTH).add(Attributes.KNOCKBACK_RESISTANCE).add(Attributes.MOVEMENT_SPEED).add(Attributes.ARMOR).add(Attributes.ARMOR_TOUGHNESS);
|
||||
}
|
||||
@@ -224,7 +224,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2
|
||||
|
||||
@Override
|
||||
protected void checkFallDamage(double heightDifference, boolean onGround, BlockState state, BlockPos landedPosition) {
|
||||
@@ -2696,7 +2697,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -2686,7 +2687,7 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
}
|
||||
|
||||
protected long lastJumpTime = 0L; // Paper
|
||||
@@ -233,7 +233,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2
|
||||
Vec3 vec3d = this.getDeltaMovement();
|
||||
// Paper start
|
||||
long time = System.nanoTime();
|
||||
@@ -3468,8 +3469,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -3458,8 +3459,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.pushEntities();
|
||||
this.level().getProfiler().pop();
|
||||
// Paper start
|
||||
@@ -246,7 +246,7 @@ index 33befdab713753d14bfe0e79e96dd925dad331c2..24797621de749e682bfbe8a09cb81bc2
|
||||
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
|
||||
Location to = new Location (this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
|
||||
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
|
||||
@@ -3479,6 +3482,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
@@ -3469,6 +3472,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
|
||||
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
|
||||
}
|
||||
}
|
||||
@@ -527,7 +527,7 @@ index 7df56705a4a0de2dc4ff7ab133fc26612c219162..384bed4505b6cabb1ae151cd2c4eb5e5
|
||||
--this.lookAtCooldown;
|
||||
this.getYRotD().ifPresent((yaw) -> {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||
index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfdb83f737d 100644
|
||||
index 2c91fe46355c9a201507de5577f693ed4f5fb974..e184d2a89a89d4bf77a32a2d610175c5bbd38a03 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java
|
||||
@@ -18,6 +18,7 @@ import net.minecraft.world.entity.EntityDimensions;
|
||||
@@ -538,7 +538,7 @@ index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfd
|
||||
import net.minecraft.world.entity.Pose;
|
||||
import net.minecraft.world.entity.ai.attributes.AttributeSupplier;
|
||||
import net.minecraft.world.entity.ai.attributes.Attributes;
|
||||
@@ -41,12 +42,59 @@ public class Bat extends AmbientCreature {
|
||||
@@ -43,12 +44,59 @@ public class Bat extends AmbientCreature {
|
||||
|
||||
public Bat(EntityType<? extends Bat> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -598,7 +598,7 @@ index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfd
|
||||
@Override
|
||||
public boolean isFlapping() {
|
||||
return !this.isResting() && this.tickCount % Bat.TICKS_PER_FLAP == 0;
|
||||
@@ -96,7 +144,7 @@ public class Bat extends AmbientCreature {
|
||||
@@ -98,7 +146,7 @@ public class Bat extends AmbientCreature {
|
||||
protected void pushEntities() {}
|
||||
|
||||
public static AttributeSupplier.Builder createAttributes() {
|
||||
@@ -607,7 +607,7 @@ index 92a9770fabc6a8175245fef92753c52bc18d16ac..fc240adb941cfa7db37916516b63cbfd
|
||||
}
|
||||
|
||||
public boolean isResting() {
|
||||
@@ -128,6 +176,14 @@ public class Bat extends AmbientCreature {
|
||||
@@ -130,6 +178,14 @@ public class Bat extends AmbientCreature {
|
||||
|
||||
@Override
|
||||
protected void customServerAiStep() {
|
||||
@@ -679,7 +679,7 @@ index 2249fc6dd98afb8d52623b5864955fdd3b3fc042..2ccfaab0a02cf5ff9779e250fb79a75a
|
||||
double d = this.wantedX - this.fish.getX();
|
||||
double e = this.wantedY - this.fish.getY();
|
||||
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 f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea026411845 100644
|
||||
index 55026e1731e41b4e3e4c6a8fef5d96a32051a556..706ae64b894709601dccfb621d3c215f073e98e9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java
|
||||
@@ -43,6 +43,7 @@ import net.minecraft.world.entity.EntityType;
|
||||
@@ -690,7 +690,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0
|
||||
import net.minecraft.world.entity.NeutralMob;
|
||||
import net.minecraft.world.entity.PathfinderMob;
|
||||
import net.minecraft.world.entity.Pose;
|
||||
@@ -142,6 +143,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
@@ -147,6 +148,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
public Bee(EntityType<? extends Bee> type, Level world) {
|
||||
super(type, world);
|
||||
this.remainingCooldownBeforeLocatingNewFlower = Mth.nextInt(this.random, 20, 60);
|
||||
@@ -698,7 +698,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0
|
||||
// Paper start - apply gravity to bees when they get stuck in the void, fixes MC-167279
|
||||
class BeeFlyingMoveControl extends FlyingMoveControl {
|
||||
public BeeFlyingMoveControl(final Mob entity, final int maxPitchChange, final boolean noGravity) {
|
||||
@@ -150,11 +152,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
@@ -155,11 +157,24 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
@@ -723,7 +723,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0
|
||||
}
|
||||
this.moveControl = new BeeFlyingMoveControl(this, 20, true);
|
||||
// Paper end
|
||||
@@ -166,6 +181,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
@@ -171,6 +186,40 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
this.setPathfindingMalus(BlockPathTypes.FENCE, -1.0F);
|
||||
}
|
||||
|
||||
@@ -764,7 +764,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0
|
||||
@Override
|
||||
protected void defineSynchedData() {
|
||||
super.defineSynchedData();
|
||||
@@ -180,6 +229,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
@@ -185,6 +234,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
@@ -772,7 +772,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0
|
||||
this.goalSelector.addGoal(0, new Bee.BeeAttackGoal(this, 1.399999976158142D, true));
|
||||
this.goalSelector.addGoal(1, new Bee.BeeEnterHiveGoal());
|
||||
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
|
||||
@@ -195,6 +245,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
@@ -200,6 +250,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
this.goalSelector.addGoal(7, new Bee.BeeGrowCropGoal());
|
||||
this.goalSelector.addGoal(8, new Bee.BeeWanderGoal());
|
||||
this.goalSelector.addGoal(9, new FloatGoal(this));
|
||||
@@ -780,7 +780,7 @@ index f6062bf8c888baeb7b421150a2c64bf1af1a312b..79a2d45f10aa1afb5d1192284cd48ea0
|
||||
this.targetSelector.addGoal(1, (new Bee.BeeHurtByOtherGoal(this)).setAlertOthers(new Class[0]));
|
||||
this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this));
|
||||
this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true));
|
||||
@@ -877,16 +928,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
@@ -881,16 +932,16 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -916,10 +916,10 @@ index 824e5e4fe7619ae46061c3c978c9a044db8c84ab..e2a98b45e56a368de19bb65e304370a5
|
||||
public ItemStack getBucketItemStack() {
|
||||
return new ItemStack(Items.COD_BUCKET);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java
|
||||
index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561915a7903 100644
|
||||
index 0263acf81330ada1bb8ae7d52a3b04e08d0c4dcb..11082cf272b72123d8917baa9a0d0e5367dca66b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Cow.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java
|
||||
@@ -41,9 +41,27 @@ public class Cow extends Animal {
|
||||
@@ -42,9 +42,27 @@ public class Cow extends Animal {
|
||||
super(type, world);
|
||||
}
|
||||
|
||||
@@ -947,7 +947,7 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561
|
||||
this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D));
|
||||
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
|
||||
this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false));
|
||||
@@ -84,6 +102,7 @@ public class Cow extends Animal {
|
||||
@@ -85,6 +103,7 @@ public class Cow extends Animal {
|
||||
|
||||
@Override
|
||||
public InteractionResult mobInteract(Player player, InteractionHand hand) {
|
||||
@@ -955,8 +955,8 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561
|
||||
ItemStack itemstack = player.getItemInHand(hand);
|
||||
|
||||
if (itemstack.is(Items.BUCKET) && !this.isBaby()) {
|
||||
@@ -91,7 +110,7 @@ public class Cow extends Animal {
|
||||
org.bukkit.event.player.PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand);
|
||||
@@ -92,7 +111,7 @@ public class Cow extends Animal {
|
||||
PlayerBucketFillEvent event = CraftEventFactory.callPlayerBucketFillEvent((ServerLevel) player.level(), player, this.blockPosition(), this.blockPosition(), null, itemstack, Items.MILK_BUCKET, hand);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
- return InteractionResult.PASS;
|
||||
@@ -965,10 +965,10 @@ index 4b63f6aa3d19cc4f47b05d531df3a43bf398c9ea..3ac30ed0a411384be5102de498815561
|
||||
// CraftBukkit end
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f367342852185974 100644
|
||||
index 4ec6dc8ddcb940091956fdf014f43832db287d8d..c268b50d43a45a5f80fd776e56484d872d494013 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Dolphin.java
|
||||
@@ -78,14 +78,82 @@ public class Dolphin extends WaterAnimal {
|
||||
@@ -82,14 +82,82 @@ public class Dolphin extends WaterAnimal {
|
||||
public static final Predicate<ItemEntity> ALLOWED_ITEMS = (entityitem) -> {
|
||||
return !entityitem.hasPickUpDelay() && entityitem.isAlive() && entityitem.isInWater();
|
||||
};
|
||||
@@ -1052,7 +1052,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428
|
||||
@Nullable
|
||||
@Override
|
||||
public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) {
|
||||
@@ -160,6 +228,7 @@ public class Dolphin extends WaterAnimal {
|
||||
@@ -164,6 +232,7 @@ public class Dolphin extends WaterAnimal {
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new BreathAirGoal(this));
|
||||
this.goalSelector.addGoal(0, new TryFindWaterGoal(this));
|
||||
@@ -1060,7 +1060,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428
|
||||
this.goalSelector.addGoal(1, new Dolphin.DolphinSwimToTreasureGoal(this));
|
||||
this.goalSelector.addGoal(2, new Dolphin.DolphinSwimWithPlayerGoal(this, 4.0D));
|
||||
this.goalSelector.addGoal(4, new RandomSwimmingGoal(this, 1.0D, 10));
|
||||
@@ -170,6 +239,7 @@ public class Dolphin extends WaterAnimal {
|
||||
@@ -174,6 +243,7 @@ public class Dolphin extends WaterAnimal {
|
||||
this.goalSelector.addGoal(8, new Dolphin.PlayWithItemsGoal());
|
||||
this.goalSelector.addGoal(8, new FollowBoatGoal(this));
|
||||
this.goalSelector.addGoal(9, new AvoidEntityGoal<>(this, Guardian.class, 8.0F, 1.0D, 1.0D));
|
||||
@@ -1068,7 +1068,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428
|
||||
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{Guardian.class})).setAlertOthers());
|
||||
}
|
||||
|
||||
@@ -221,7 +291,7 @@ public class Dolphin extends WaterAnimal {
|
||||
@@ -225,7 +295,7 @@ public class Dolphin extends WaterAnimal {
|
||||
|
||||
@Override
|
||||
protected boolean canRide(Entity entity) {
|
||||
@@ -1077,7 +1077,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -256,6 +326,11 @@ public class Dolphin extends WaterAnimal {
|
||||
@@ -260,6 +330,11 @@ public class Dolphin extends WaterAnimal {
|
||||
@Override
|
||||
public void tick() {
|
||||
super.tick();
|
||||
@@ -1090,7 +1090,7 @@ index 501e6cb4aa83f81c1f657e41f4e7f11d19d46831..b9a2064fd3a08aa21f1a25d3f3673428
|
||||
this.setAirSupply(this.getMaxAirSupply());
|
||||
} else {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
index 844083101e9763330af0175388f6cdda27a97ecc..c56aaf2d0460d5a4432f893300140d071a95cc38 100644
|
||||
index 62604ed2e82afd3603ccac5d9c6e285c431542b1..e0a21a0e8ff29f5b634fcb312881a1a93c6c3a44 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java
|
||||
@@ -141,6 +141,44 @@ public class Fox extends Animal implements VariantHolder<Fox.Type> {
|
||||
@@ -1297,7 +1297,7 @@ index a04374f91f2fbb31219d86b6ae63bcf8fdf7318c..7b0e3b46e3d318ee856d53cfc5532f34
|
||||
|
||||
Pair<MobEffect, Integer> pair = (Pair) optional.get();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
|
||||
index 8974c3cdae25bef239a908ce688e153d902c48c5..9f1187f5af0594da1c8450a05e0181815375c782 100644
|
||||
index 924ea172cab5178e5754bfe09cc7b83c1a66faa6..c25549d516072bdb362f78efce3da730e08f3ccc 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Ocelot.java
|
||||
@@ -68,6 +68,23 @@ public class Ocelot extends Animal {
|
||||
@@ -1340,10 +1340,10 @@ index 8974c3cdae25bef239a908ce688e153d902c48c5..9f1187f5af0594da1c8450a05e018181
|
||||
this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Turtle.class, 10, false, false, Turtle.BABY_ON_LAND_SELECTOR));
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Panda.java b/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
||||
index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b5f6b102f 100644
|
||||
index f43c4fed59c4c75540008284ddb197d9a6b5487b..cc12b93b5c95202c4e3417e3a35e5f5c361b9767 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Panda.java
|
||||
@@ -108,6 +108,32 @@ public class Panda extends Animal {
|
||||
@@ -111,6 +111,32 @@ public class Panda extends Animal {
|
||||
|
||||
}
|
||||
|
||||
@@ -1376,7 +1376,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
@Override
|
||||
public boolean canTakeItem(ItemStack stack) {
|
||||
EquipmentSlot enumitemslot = Mob.getEquipmentSlotForItem(stack);
|
||||
@@ -269,6 +295,7 @@ public class Panda extends Animal {
|
||||
@@ -272,6 +298,7 @@ public class Panda extends Animal {
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
@@ -1384,7 +1384,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
this.goalSelector.addGoal(2, new Panda.PandaPanicGoal(this, 2.0D));
|
||||
this.goalSelector.addGoal(2, new Panda.PandaBreedGoal(this, 1.0D));
|
||||
this.goalSelector.addGoal(3, new Panda.PandaAttackGoal(this, 1.2000000476837158D, true));
|
||||
@@ -284,6 +311,7 @@ public class Panda extends Animal {
|
||||
@@ -287,6 +314,7 @@ public class Panda extends Animal {
|
||||
this.goalSelector.addGoal(12, new Panda.PandaRollGoal(this));
|
||||
this.goalSelector.addGoal(13, new FollowParentGoal(this, 1.25D));
|
||||
this.goalSelector.addGoal(14, new WaterAvoidingRandomStrollGoal(this, 1.0D));
|
||||
@@ -1392,7 +1392,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
this.targetSelector.addGoal(1, (new Panda.PandaHurtByTargetGoal(this, new Class[0])).setAlertOthers(new Class[0]));
|
||||
}
|
||||
|
||||
@@ -630,7 +658,7 @@ public class Panda extends Animal {
|
||||
@@ -633,7 +661,7 @@ public class Panda extends Animal {
|
||||
ItemStack itemstack = player.getItemInHand(hand);
|
||||
|
||||
if (this.isScared()) {
|
||||
@@ -1401,7 +1401,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
} else if (this.isOnBack()) {
|
||||
this.setOnBack(false);
|
||||
return InteractionResult.sidedSuccess(this.level().isClientSide);
|
||||
@@ -647,7 +675,7 @@ public class Panda extends Animal {
|
||||
@@ -650,7 +678,7 @@ public class Panda extends Animal {
|
||||
this.setInLove(player);
|
||||
} else {
|
||||
if (this.level().isClientSide || this.isSitting() || this.isInWater()) {
|
||||
@@ -1410,7 +1410,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
}
|
||||
|
||||
this.tryToSit();
|
||||
@@ -666,7 +694,7 @@ public class Panda extends Animal {
|
||||
@@ -669,7 +697,7 @@ public class Panda extends Animal {
|
||||
|
||||
return InteractionResult.SUCCESS;
|
||||
} else {
|
||||
@@ -1419,7 +1419,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
}
|
||||
}
|
||||
|
||||
@@ -706,7 +734,7 @@ public class Panda extends Animal {
|
||||
@@ -709,7 +737,7 @@ public class Panda extends Animal {
|
||||
return !this.isOnBack() && !this.isScared() && !this.isEating() && !this.isRolling() && !this.isSitting();
|
||||
}
|
||||
|
||||
@@ -1428,7 +1428,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
|
||||
private final Panda panda;
|
||||
|
||||
@@ -716,9 +744,9 @@ public class Panda extends Animal {
|
||||
@@ -719,9 +747,9 @@ public class Panda extends Animal {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1441,7 +1441,7 @@ index 9b807b318a2843810c3963277d464439a865cfb6..490a2b416366136c082371d39beaa65b
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Parrot.java b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
|
||||
index 3cc7af656433117991547476c118b58cff95e8e2..39c5da4e037f57cca0316804d0e363c32a441c6b 100644
|
||||
index e1874aaa0065a6e8e6ae043713c22f08b58b5e21..dc6bc1ecb11a8d1776be488de4df7243d196f330 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Parrot.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Parrot.java
|
||||
@@ -129,12 +129,68 @@ public class Parrot extends ShoulderRidingEntity implements VariantHolder<Parrot
|
||||
@@ -1662,10 +1662,10 @@ index a197337f2e09f53cf382022569c8836745d78769..95383e246a8e1b311e4f26a66372966b
|
||||
protected void defineSynchedData() {
|
||||
super.defineSynchedData();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df86404fa73ed4 100644
|
||||
index ef0c0714847c37f57ca05aaeb0ce7c217ae7ac0f..df01b1c5a0f0ad34f0a49c2ac1d10d526b73da9b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java
|
||||
@@ -83,6 +83,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -86,6 +86,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
private boolean wasOnGround;
|
||||
private int jumpDelayTicks;
|
||||
public int moreCarrotTicks;
|
||||
@@ -1673,8 +1673,8 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640
|
||||
|
||||
public Rabbit(EntityType<? extends Rabbit> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -91,6 +92,51 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
this.initializePathFinderGoals(); // CraftBukkit - moved code
|
||||
@@ -93,9 +94,55 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
this.moveControl = new Rabbit.RabbitMoveControl(this);
|
||||
}
|
||||
|
||||
+ // Purpur start
|
||||
@@ -1722,10 +1722,6 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
// CraftBukkit start - code from constructor
|
||||
public void initializePathFinderGoals(){
|
||||
this.setSpeedModifier(0.0D);
|
||||
@@ -100,6 +146,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@Override
|
||||
public void registerGoals() {
|
||||
this.goalSelector.addGoal(1, new FloatGoal(this));
|
||||
@@ -1733,7 +1729,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640
|
||||
this.goalSelector.addGoal(1, new ClimbOnTopOfPowderSnowGoal(this, this.level()));
|
||||
this.goalSelector.addGoal(1, new Rabbit.RabbitPanicGoal(this, 2.2D));
|
||||
this.goalSelector.addGoal(2, new BreedGoal(this, 0.8D));
|
||||
@@ -114,6 +161,14 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -110,6 +157,14 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
|
||||
@Override
|
||||
protected float getJumpPower() {
|
||||
@@ -1748,7 +1744,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640
|
||||
float f = 0.3F;
|
||||
|
||||
if (this.horizontalCollision || this.moveControl.hasWanted() && this.moveControl.getWantedY() > this.getY() + 0.5D) {
|
||||
@@ -138,7 +193,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -134,7 +189,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1757,7 +1753,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640
|
||||
super.jumpFromGround();
|
||||
double d0 = this.moveControl.getSpeedModifier();
|
||||
|
||||
@@ -188,6 +243,13 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -184,6 +239,13 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
|
||||
@Override
|
||||
public void customServerAiStep() {
|
||||
@@ -1771,7 +1767,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640
|
||||
if (this.jumpDelayTicks > 0) {
|
||||
--this.jumpDelayTicks;
|
||||
}
|
||||
@@ -472,7 +534,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -468,7 +530,7 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1780,7 +1776,7 @@ index 01a58fe71669bf199511c906363d036ed880aa91..22188b537271d6cfd276027bb5df8640
|
||||
|
||||
private final Rabbit rabbit;
|
||||
private double nextJumpSpeed;
|
||||
@@ -483,14 +545,14 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
@@ -479,14 +541,14 @@ public class Rabbit extends Animal implements VariantHolder<Rabbit.Variant> {
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -1854,7 +1850,7 @@ index c0e89262c596fbdd0bb3c3f76baccb17a1bb5fcd..0e2f10fa133281477ab96ba743266ade
|
||||
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D));
|
||||
this.goalSelector.addGoal(3, new TemptGoal(this, 1.1D, Ingredient.of(Items.WHEAT), false));
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
index 96bfba9d3ccdbf95b8eea4038bf42e6b1430181d..190d123a87ef8ca84e5e0cc485a5cc65fe5ed8e8 100644
|
||||
index 8adcfc8f6772a32b5915e4a07100e8eb735f907a..04927f5f06d6dc14ad01319dd22583632c2c511b 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java
|
||||
@@ -54,12 +54,31 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM
|
||||
@@ -1916,10 +1912,10 @@ index 96bfba9d3ccdbf95b8eea4038bf42e6b1430181d..190d123a87ef8ca84e5e0cc485a5cc65
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
index b72006c4b2342ca9d9a81f54f89fa6d979c33c85..fa635fa6828c4d7e0fd80ae00cc21e5598542703 100644
|
||||
index f60c4cd0543fd5d50fa7e2c1a9e8381227adb540..7fa03dbc442942b70f374096e346d54089d8f0a0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java
|
||||
@@ -50,9 +50,32 @@ public class Squid extends WaterAnimal {
|
||||
@@ -48,9 +48,32 @@ public class Squid extends WaterAnimal {
|
||||
this.tentacleSpeed = 1.0F / (this.random.nextFloat() + 1.0F) * 0.2F;
|
||||
}
|
||||
|
||||
@@ -1952,7 +1948,7 @@ index b72006c4b2342ca9d9a81f54f89fa6d979c33c85..fa635fa6828c4d7e0fd80ae00cc21e55
|
||||
this.goalSelector.addGoal(1, new Squid.SquidFleeGoal());
|
||||
}
|
||||
|
||||
@@ -244,6 +267,38 @@ public class Squid extends WaterAnimal {
|
||||
@@ -298,6 +321,37 @@ public class Squid extends WaterAnimal {
|
||||
|
||||
@Override
|
||||
public void tick() {
|
||||
@@ -1987,10 +1983,9 @@ index b72006c4b2342ca9d9a81f54f89fa6d979c33c85..fa635fa6828c4d7e0fd80ae00cc21e55
|
||||
+ return;
|
||||
+ }
|
||||
+ // Purpur end
|
||||
+
|
||||
int i = this.squid.getNoActionTime();
|
||||
|
||||
if (i > 100) {
|
||||
this.squid.setMovementVector(0.0F, 0.0F, 0.0F);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java
|
||||
index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7fb90908f 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java
|
||||
@@ -2015,7 +2010,7 @@ index b05b560b7570e97bc234b75f26233909fcf575b3..71234b258157579d3a47064e7e299bb7
|
||||
return "entity.minecraft.tropical_fish.predefined." + variant;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
|
||||
index 098ae9d8fa3e7cad8473a877decba771f6bd1b36..e8d4fa852f22b7de191dcf26b52f19cb81967fa0 100644
|
||||
index d3c15d029d5f003cba3c89f7ea1f3ed4f943f2bd..46b71439efdab39c28d29684913bec2a1ba6491a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java
|
||||
@@ -83,6 +83,23 @@ public class Turtle extends Animal {
|
||||
@@ -2097,10 +2092,10 @@ index 098ae9d8fa3e7cad8473a877decba771f6bd1b36..e8d4fa852f22b7de191dcf26b52f19cb
|
||||
this.turtle.setSpeed(Mth.lerp(0.125F, this.turtle.getSpeed(), f1));
|
||||
this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0D, (double) this.turtle.getSpeed() * d1 * 0.1D, 0.0D));
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
index 27c4dd3605373f08078048fe923a8f6f4d3ccf3b..cb2b8c7cbbe882ae0ca876edaa66bea1d5cd141d 100644
|
||||
index 57ceec70bb150afaa66962090b142048d5b50c2f..40d647d6b3132f8273d43a1addcb8c8116c7ec19 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java
|
||||
@@ -102,9 +102,32 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -103,9 +103,32 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
this.setPathfindingMalus(BlockPathTypes.DANGER_POWDER_SNOW, -1.0F);
|
||||
}
|
||||
|
||||
@@ -2133,7 +2128,7 @@ index 27c4dd3605373f08078048fe923a8f6f4d3ccf3b..cb2b8c7cbbe882ae0ca876edaa66bea1
|
||||
this.goalSelector.addGoal(1, new Wolf.WolfPanicGoal(1.5D));
|
||||
this.goalSelector.addGoal(2, new SitWhenOrderedToGoal(this));
|
||||
this.goalSelector.addGoal(3, new Wolf.WolfAvoidEntityGoal<>(this, Llama.class, 24.0F, 1.5D, 1.5D));
|
||||
@@ -116,6 +139,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
@@ -117,6 +140,7 @@ public class Wolf extends TamableAnimal implements NeutralMob {
|
||||
this.goalSelector.addGoal(9, new BegGoal(this, 8.0F));
|
||||
this.goalSelector.addGoal(10, new LookAtPlayerGoal(this, Player.class, 8.0F));
|
||||
this.goalSelector.addGoal(10, new RandomLookAroundGoal(this));
|
||||
@@ -2453,10 +2448,10 @@ index 6ed4ac06c76b8d0d6e8db778cade15dbd1e3e5f5..af8438ae8c805d3276ef2d82eb39b088
|
||||
this.level().getProfiler().pop();
|
||||
this.level().getProfiler().push("tadpoleActivityUpdate");
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
index 2c7193e967b4cb5a7c98a760286a2c3791152359..1d9e2c93fa08d6f2f16b81021477294a6de3ce04 100644
|
||||
index 7f21d1d400c8a5615ed1a787dcb0680338f8c28d..ec956339b02fc9da53563d67c0eeaa91a3c3a8ee 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/goat/Goat.java
|
||||
@@ -89,6 +89,23 @@ public class Goat extends Animal {
|
||||
@@ -90,6 +90,23 @@ public class Goat extends Animal {
|
||||
return InstrumentItem.create(Items.GOAT_HORN, (Holder) holderset.getRandomElement(randomsource).get());
|
||||
}
|
||||
|
||||
@@ -2480,7 +2475,7 @@ index 2c7193e967b4cb5a7c98a760286a2c3791152359..1d9e2c93fa08d6f2f16b81021477294a
|
||||
@Override
|
||||
protected Brain.Provider<Goat> brainProvider() {
|
||||
return Brain.provider(Goat.MEMORY_TYPES, Goat.SENSOR_TYPES);
|
||||
@@ -192,7 +209,7 @@ public class Goat extends Animal {
|
||||
@@ -193,7 +210,7 @@ public class Goat extends Animal {
|
||||
@Override
|
||||
protected void customServerAiStep() {
|
||||
this.level().getProfiler().push("goatBrain");
|
||||
@@ -2490,10 +2485,10 @@ index 2c7193e967b4cb5a7c98a760286a2c3791152359..1d9e2c93fa08d6f2f16b81021477294a
|
||||
this.level().getProfiler().pop();
|
||||
this.level().getProfiler().push("goatActivityUpdate");
|
||||
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 79b6e241f425622fdc575b77d8dce7061c0ab783..b948f8ac7072afa7a60cdbb2775b0e2fa0a052e9 100644
|
||||
index 9b35a50eb99551f28d45fd5114e0401b4c54646e..55bc8ccc459b093ad48790932381228e24a24f14 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
|
||||
@@ -144,12 +144,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
|
||||
@@ -147,12 +147,22 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
|
||||
|
||||
protected AbstractHorse(EntityType<? extends AbstractHorse> type, Level world) {
|
||||
super(type, world);
|
||||
@@ -2516,7 +2511,7 @@ index 79b6e241f425622fdc575b77d8dce7061c0ab783..b948f8ac7072afa7a60cdbb2775b0e2f
|
||||
this.goalSelector.addGoal(1, new PanicGoal(this, 1.2D));
|
||||
this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D));
|
||||
this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D, AbstractHorse.class));
|
||||
@@ -160,6 +170,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
|
||||
@@ -163,6 +173,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener,
|
||||
if (this.canPerformRearing()) {
|
||||
this.goalSelector.addGoal(9, new RandomStandGoal(this));
|
||||
}
|
||||
@@ -2561,7 +2556,7 @@ index 5f5dc651d570989ec1294c31a14dcfede466b80a..3e50581033e88e8eddcbd85bfa890cbe
|
||||
protected void randomizeAttributes(RandomSource random) {
|
||||
this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt));
|
||||
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 3bbb1455773570e3f7f6b8b144d3c589e2705b81..e05f917c462ba5bfb114e402b4f5309f421651fb 100644
|
||||
index d28089c37707f323f73e60cb0ebed4e3cdf8c0fd..42d5b435728aa497dc34f0ac984e8637fe96343d 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
|
||||
@@ -76,7 +76,51 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@@ -2616,7 +2611,7 @@ index 3bbb1455773570e3f7f6b8b144d3c589e2705b81..e05f917c462ba5bfb114e402b4f5309f
|
||||
|
||||
public boolean isTraderLlama() {
|
||||
return false;
|
||||
@@ -128,6 +172,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@@ -127,6 +171,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@Override
|
||||
protected void registerGoals() {
|
||||
this.goalSelector.addGoal(0, new FloatGoal(this));
|
||||
@@ -2624,7 +2619,7 @@ index 3bbb1455773570e3f7f6b8b144d3c589e2705b81..e05f917c462ba5bfb114e402b4f5309f
|
||||
this.goalSelector.addGoal(1, new RunAroundLikeCrazyGoal(this, 1.2D));
|
||||
this.goalSelector.addGoal(2, new LlamaFollowCaravanGoal(this, 2.0999999046325684D));
|
||||
this.goalSelector.addGoal(3, new RangedAttackGoal(this, 1.25D, 40, 20.0F));
|
||||
@@ -138,6 +183,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
@@ -137,6 +182,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder<Llama.V
|
||||
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 0.7D));
|
||||
this.goalSelector.addGoal(8, new LookAtPlayerGoal(this, Player.class, 6.0F));
|
||||
this.goalSelector.addGoal(9, new RandomLookAroundGoal(this));
|
||||
@@ -2950,7 +2945,7 @@ index 92666c48620078623a451fbf68f673cb9f81c4b5..5a2eb6775ecb3b01fd136c796258395b
|
||||
this.dragonFight.updateDragon(this);
|
||||
}
|
||||
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 f69e0b11be74ac83694f59999b3f07a318410c19..10da1bc9374a4178a38dd101bf173a77216101fa 100644
|
||||
index 1ea5b05405f115e5d77ff0b282075628e64fec3d..e1cf87e13f077860e38714a962c549dcb4644e3f 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,16 +84,30 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
|
||||
@@ -3262,7 +3257,7 @@ index da48bd8e15463be8170262ae90a8e95575959bf2..34abd8093015d7cdaf2faca2396d3950
|
||||
public boolean doHurtTarget(Entity target) {
|
||||
if (super.doHurtTarget(target)) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
index 71587510ef1b6cbd95cb55556cd93c6c194ea5f5..8782e1b1150dd23fd4a66acdab963b2af5bd4425 100644
|
||||
index 7fe90ebc8eced53f72c7f935e40745075f02421b..5017a82ced2ea5b7a58fa54c5898b83c5746a2b9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java
|
||||
@@ -59,21 +59,98 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
@@ -3364,7 +3359,7 @@ index 71587510ef1b6cbd95cb55556cd93c6c194ea5f5..8782e1b1150dd23fd4a66acdab963b2a
|
||||
this.targetSelector.addGoal(1, new NearestAttackableTargetGoal<>(this, Player.class, true));
|
||||
this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0]));
|
||||
}
|
||||
@@ -322,6 +399,7 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
@@ -324,6 +401,7 @@ public class Creeper extends Monster implements PowerableMob {
|
||||
com.destroystokyo.paper.event.entity.CreeperIgniteEvent event = new com.destroystokyo.paper.event.entity.CreeperIgniteEvent((org.bukkit.entity.Creeper) getBukkitEntity(), ignited);
|
||||
if (event.callEvent()) {
|
||||
this.entityData.set(Creeper.DATA_IS_IGNITED, event.isIgnited());
|
||||
@@ -3461,10 +3456,10 @@ index 8f481e11815d7162dd62a2b850b3d2af6d904519..16486ece9fc415d875ff94d9b806b0b5
|
||||
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.30000001192092896D).add(Attributes.ATTACK_DAMAGE, 8.0D).add(Attributes.MAX_HEALTH, 80.0D);
|
||||
}
|
||||
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 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74cf15702bb 100644
|
||||
index eaf45b502a698e26a703b93e62989a338479496e..d88ad3f0513f9ab2ffc738b6389cf268f085ca6d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/EnderMan.java
|
||||
@@ -92,9 +92,27 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -96,9 +96,27 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
this.setPathfindingMalus(BlockPathTypes.WATER, -1.0F);
|
||||
}
|
||||
|
||||
@@ -3492,7 +3487,7 @@ index 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74c
|
||||
this.goalSelector.addGoal(1, new EnderMan.EndermanFreezeWhenLookedAt(this));
|
||||
this.goalSelector.addGoal(2, new MeleeAttackGoal(this, 1.0D, false));
|
||||
this.goalSelector.addGoal(7, new WaterAvoidingRandomStrollGoal(this, 1.0D, 0.0F));
|
||||
@@ -102,6 +120,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -106,6 +124,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
this.goalSelector.addGoal(8, new RandomLookAroundGoal(this));
|
||||
this.goalSelector.addGoal(10, new EnderMan.EndermanLeaveBlockGoal(this));
|
||||
this.goalSelector.addGoal(11, new EnderMan.EndermanTakeBlockGoal(this));
|
||||
@@ -3500,7 +3495,7 @@ index 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74c
|
||||
this.targetSelector.addGoal(1, new EnderMan.EndermanLookForPlayerGoal(this, this::isAngryAt));
|
||||
this.targetSelector.addGoal(2, new HurtByTargetGoal(this, new Class[0]));
|
||||
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Endermite.class, true, false));
|
||||
@@ -283,7 +302,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -287,7 +306,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
|
||||
@Override
|
||||
protected void customServerAiStep() {
|
||||
@@ -3509,7 +3504,7 @@ index 54a9529ea92889d57e348307a35097f715a13501..c3cfa392b92b9bc7944fd28782b3b74c
|
||||
float f = this.getLightLevelDependentMagicValue();
|
||||
|
||||
if (f > 0.5F && this.level().canSeeSky(this.blockPosition()) && this.random.nextFloat() * 30.0F < (f - 0.4F) * 2.0F && this.tryEscape(com.destroystokyo.paper.event.entity.EndermanEscapeEvent.Reason.RUNAWAY)) { // Paper
|
||||
@@ -404,6 +423,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
@@ -408,6 +427,7 @@ public class EnderMan extends Monster implements NeutralMob {
|
||||
public boolean hurt(DamageSource source, float amount) {
|
||||
if (this.isInvulnerableTo(source)) {
|
||||
return false;
|
||||
@@ -4102,10 +4097,10 @@ index cec545c3baa6599d47b9cf1a4b97de8771062a22..31d204d8d81ccc30371070af3678d82d
|
||||
this.targetSelector.addGoal(2, new NearestAttackableTargetGoal<>(this, Player.class, true));
|
||||
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, false));
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Ravager.java b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
index 75d661c23cde1ba09ea0b673860c9659c32ef77e..4aa0f1a4848411a83b5d211e799c30e743b148fe 100644
|
||||
index 842146548fc42c3b67a1196620b096d6c500b88d..3919ed8b4d91b9d58acbdd72740565352e7c52ec 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Ravager.java
|
||||
@@ -65,14 +65,39 @@ public class Ravager extends Raider {
|
||||
@@ -68,14 +68,39 @@ public class Ravager extends Raider {
|
||||
this.setPathfindingMalus(BlockPathTypes.LEAVES, 0.0F);
|
||||
}
|
||||
|
||||
@@ -4145,7 +4140,7 @@ index 75d661c23cde1ba09ea0b673860c9659c32ef77e..4aa0f1a4848411a83b5d211e799c30e7
|
||||
this.targetSelector.addGoal(2, (new HurtByTargetGoal(this, new Class[]{Raider.class})).setAlertOthers());
|
||||
this.targetSelector.addGoal(3, new NearestAttackableTargetGoal<>(this, Player.class, true));
|
||||
this.targetSelector.addGoal(4, new NearestAttackableTargetGoal<>(this, AbstractVillager.class, true, (entityliving) -> {
|
||||
@@ -150,7 +175,7 @@ public class Ravager extends Raider {
|
||||
@@ -153,7 +178,7 @@ public class Ravager extends Raider {
|
||||
@Override
|
||||
public void aiStep() {
|
||||
super.aiStep();
|
||||
@@ -4155,7 +4150,7 @@ index 75d661c23cde1ba09ea0b673860c9659c32ef77e..4aa0f1a4848411a83b5d211e799c30e7
|
||||
this.getAttribute(Attributes.MOVEMENT_SPEED).setBaseValue(0.0D);
|
||||
} else {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Shulker.java b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
|
||||
index cdccbe68fb591181517893a5dd1e93489b578f4d..d4b318fc6382cd043e34db0d12d78e3561023dd5 100644
|
||||
index d2073de07bdad71b20e05046577b16649123967b..3e5548d0489b13b4a1d5c22c9d3bf19ead87928e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Shulker.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Shulker.java
|
||||
@@ -98,12 +98,31 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
|
||||
@@ -4190,7 +4185,7 @@ index cdccbe68fb591181517893a5dd1e93489b578f4d..d4b318fc6382cd043e34db0d12d78e35
|
||||
this.targetSelector.addGoal(1, (new HurtByTargetGoal(this, new Class[]{this.getClass()})).setAlertOthers());
|
||||
this.targetSelector.addGoal(2, new Shulker.ShulkerNearestAttackGoal(this));
|
||||
this.targetSelector.addGoal(3, new Shulker.ShulkerDefenseAttackGoal(this));
|
||||
@@ -611,7 +630,7 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
|
||||
@@ -609,7 +628,7 @@ public class Shulker extends AbstractGolem implements VariantHolder<Optional<Dye
|
||||
return b0 != 16 && b0 <= 15 ? DyeColor.byId(b0) : null;
|
||||
}
|
||||
|
||||
@@ -4200,10 +4195,10 @@ index cdccbe68fb591181517893a5dd1e93489b578f4d..d4b318fc6382cd043e34db0d12d78e35
|
||||
public ShulkerLookControl(Mob entity) {
|
||||
super(entity);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
index 9d3f0f413120e825a44f3eea6b9089761840ff1f..5597e4f07795287d22e0ef89051bf8ea2a27d055 100644
|
||||
index 0b2d9eb8b3ff06cc64aa5bc7a81d79769709ccf0..ebfe46a6063edf1dafef19ba570a1c0942dc87ee 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/Silverfish.java
|
||||
@@ -42,14 +42,33 @@ public class Silverfish extends Monster {
|
||||
@@ -45,14 +45,33 @@ public class Silverfish extends Monster {
|
||||
super(type, world);
|
||||
}
|
||||
|
||||
@@ -5177,10 +5172,10 @@ index cc0a3d9794d05b6bc6ab05f4f2ab8d83134b181d..e1f918d0bd2a70db1aba8bda8717149f
|
||||
HitResult hitResult = world.clip(new ClipContext(pos, vec3, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, entity));
|
||||
if (hitResult.getType() != HitResult.Type.MISS) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
|
||||
index 80b86d5dd68c3d288a1a61ea8aa1cba9d899aa1c..71916a0e55f12a2cbb2bee85ededd15126e1c451 100644
|
||||
index 06d1bdb9bd124b201c36d284c50d22bf50d3735a..937f57d8af629c4e913d7ccabf6adab15f91d3d0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java
|
||||
@@ -107,6 +107,12 @@ public class WitherSkull extends AbstractHurtingProjectile {
|
||||
@@ -109,6 +109,12 @@ public class WitherSkull extends AbstractHurtingProjectile {
|
||||
|
||||
}
|
||||
|
||||
@@ -5226,10 +5221,10 @@ index fc0dc8e607cc24020106ea1af92b4421a5f9393d..7d744d5b6a9e593e657233b2192f2837
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
index c1583340ecaedab0af44501213b2d24f8ad71e0c..58d4b678daa94d3f5da0589b41129ca8a3c7f851 100644
|
||||
index a6edbb5cde568d8138af568122d5d11243f3fb07..6ed0735e9b98b80ed45116907e7563f5e8b993d4 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java
|
||||
@@ -560,6 +560,15 @@ public class CraftEventFactory {
|
||||
@@ -565,6 +565,15 @@ public class CraftEventFactory {
|
||||
// Paper end
|
||||
craftServer.getPluginManager().callEvent(event);
|
||||
|
||||
@@ -5245,7 +5240,7 @@ index c1583340ecaedab0af44501213b2d24f8ad71e0c..58d4b678daa94d3f5da0589b41129ca8
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -997,6 +1006,7 @@ public class CraftEventFactory {
|
||||
@@ -1002,6 +1011,7 @@ public class CraftEventFactory {
|
||||
damageCause = DamageCause.ENTITY_EXPLOSION;
|
||||
}
|
||||
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), entity.getBukkitEntity(), damageCause, modifiers, modifierFunctions, source.isCritical()); // Paper - add critical damage API
|
||||
@@ -5253,7 +5248,7 @@ index c1583340ecaedab0af44501213b2d24f8ad71e0c..58d4b678daa94d3f5da0589b41129ca8
|
||||
}
|
||||
event.setCancelled(cancelled);
|
||||
|
||||
@@ -1111,6 +1121,7 @@ public class CraftEventFactory {
|
||||
@@ -1116,6 +1126,7 @@ public class CraftEventFactory {
|
||||
} else {
|
||||
entity.lastDamageCancelled = true; // SPIGOT-5339, SPIGOT-6252, SPIGOT-6777: Keep track if the event was canceled
|
||||
}
|
||||
@@ -5261,7 +5256,7 @@ index c1583340ecaedab0af44501213b2d24f8ad71e0c..58d4b678daa94d3f5da0589b41129ca8
|
||||
return event;
|
||||
}
|
||||
|
||||
@@ -1174,6 +1185,7 @@ public class CraftEventFactory {
|
||||
@@ -1179,6 +1190,7 @@ public class CraftEventFactory {
|
||||
EntityDamageEvent event;
|
||||
if (damager != null) {
|
||||
event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, modifiers, modifierFunctions, critical); // Paper - add critical damage API
|
||||
|
||||
Reference in New Issue
Block a user