net.minecraft.world.entity.animal.allay
This commit is contained in:
@@ -0,0 +1,83 @@
|
|||||||
|
--- a/net/minecraft/world/entity/animal/allay/Allay.java
|
||||||
|
+++ b/net/minecraft/world/entity/animal/allay/Allay.java
|
||||||
|
@@ -118,6 +_,7 @@
|
||||||
|
private float dancingAnimationTicks;
|
||||||
|
private float spinningAnimationTicks;
|
||||||
|
private float spinningAnimationTicks0;
|
||||||
|
+ public boolean forceDancing = false; // CraftBukkit
|
||||||
|
|
||||||
|
public Allay(EntityType<? extends Allay> entityType, Level level) {
|
||||||
|
super(entityType, level);
|
||||||
|
@@ -131,6 +_,12 @@
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // CraftBukkit start
|
||||||
|
+ public void setCanDuplicate(boolean canDuplicate) {
|
||||||
|
+ this.entityData.set(Allay.DATA_CAN_DUPLICATE, canDuplicate);
|
||||||
|
+ }
|
||||||
|
+ // CraftBukkit end
|
||||||
|
+
|
||||||
|
@Override
|
||||||
|
protected Brain.Provider<Allay> brainProvider() {
|
||||||
|
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
|
||||||
|
@@ -252,7 +_,7 @@
|
||||||
|
public void aiStep() {
|
||||||
|
super.aiStep();
|
||||||
|
if (!this.level().isClientSide && this.isAlive() && this.tickCount % 10 == 0) {
|
||||||
|
- this.heal(1.0F);
|
||||||
|
+ this.heal(1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.isDancing() && this.shouldStopDancing() && this.tickCount % 20 == 0) {
|
||||||
|
@@ -320,7 +_,12 @@
|
||||||
|
ItemStack itemInHand = player.getItemInHand(hand);
|
||||||
|
ItemStack itemInHand1 = this.getItemInHand(InteractionHand.MAIN_HAND);
|
||||||
|
if (this.isDancing() && itemInHand.is(ItemTags.DUPLICATES_ALLAYS) && this.canDuplicate()) {
|
||||||
|
- this.duplicateAllay();
|
||||||
|
+ // CraftBukkit start - handle cancel duplication
|
||||||
|
+ Allay allay = this.duplicateAllay();
|
||||||
|
+ if (allay == null) {
|
||||||
|
+ return InteractionResult.SUCCESS;
|
||||||
|
+ }
|
||||||
|
+ // CraftBukkit end
|
||||||
|
this.level().broadcastEntityEvent(this, (byte)18);
|
||||||
|
this.level().playSound(player, this, SoundEvents.AMETHYST_BLOCK_CHIME, SoundSource.NEUTRAL, 2.0F, 1.0F);
|
||||||
|
this.removeInteractionItem(player, itemInHand);
|
||||||
|
@@ -425,6 +_,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean shouldStopDancing() {
|
||||||
|
+ if (this.forceDancing) {return false;} // CraftBukkit
|
||||||
|
return this.jukeboxPos == null
|
||||||
|
|| !this.jukeboxPos.closerToCenterThan(this.position(), GameEvent.JUKEBOX_PLAY.value().notificationRadius())
|
||||||
|
|| !this.level().getBlockState(this.jukeboxPos).is(Blocks.JUKEBOX);
|
||||||
|
@@ -489,7 +_,7 @@
|
||||||
|
.ifPresent(data -> this.vibrationData = data);
|
||||||
|
}
|
||||||
|
|
||||||
|
- this.duplicationCooldown = tag.getInt("DuplicationCooldown");
|
||||||
|
+ this.duplicationCooldown = tag.getLong("DuplicationCooldown"); // Paper - Load as long
|
||||||
|
this.entityData.set(DATA_CAN_DUPLICATE, tag.getBoolean("CanDuplicate"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -508,15 +_,17 @@
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
- public void duplicateAllay() {
|
||||||
|
+ @Nullable public Allay duplicateAllay() { // CraftBukkit - return allay
|
||||||
|
Allay allay = EntityType.ALLAY.create(this.level(), EntitySpawnReason.BREEDING);
|
||||||
|
if (allay != null) {
|
||||||
|
allay.moveTo(this.position());
|
||||||
|
allay.setPersistenceRequired();
|
||||||
|
allay.resetDuplicationCooldown();
|
||||||
|
this.resetDuplicationCooldown();
|
||||||
|
- this.level().addFreshEntity(allay);
|
||||||
|
+ this.level().addFreshEntity(allay, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DUPLICATION); // CraftBukkit - reason for duplicated allay
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ return allay; // CraftBukkit
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetDuplicationCooldown() {
|
||||||
@@ -1,102 +0,0 @@
|
|||||||
--- a/net/minecraft/world/entity/animal/allay/Allay.java
|
|
||||||
+++ b/net/minecraft/world/entity/animal/allay/Allay.java
|
|
||||||
@@ -103,6 +103,7 @@
|
|
||||||
private float dancingAnimationTicks;
|
|
||||||
private float spinningAnimationTicks;
|
|
||||||
private float spinningAnimationTicks0;
|
|
||||||
+ public boolean forceDancing = false; // CraftBukkit
|
|
||||||
|
|
||||||
public Allay(EntityType<? extends Allay> type, Level world) {
|
|
||||||
super(type, world);
|
|
||||||
@@ -114,6 +115,12 @@
|
|
||||||
this.dynamicJukeboxListener = new DynamicGameEventListener<>(new Allay.JukeboxListener(this.vibrationUser.getPositionSource(), ((GameEvent) GameEvent.JUKEBOX_PLAY.value()).notificationRadius()));
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // CraftBukkit start
|
|
||||||
+ public void setCanDuplicate(boolean canDuplicate) {
|
|
||||||
+ this.entityData.set(Allay.DATA_CAN_DUPLICATE, canDuplicate);
|
|
||||||
+ }
|
|
||||||
+ // CraftBukkit end
|
|
||||||
+
|
|
||||||
@Override
|
|
||||||
protected Brain.Provider<Allay> brainProvider() {
|
|
||||||
return Brain.provider(Allay.MEMORY_TYPES, Allay.SENSOR_TYPES);
|
|
||||||
@@ -126,7 +133,7 @@
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public Brain<Allay> getBrain() {
|
|
||||||
- return super.getBrain();
|
|
||||||
+ return (Brain<Allay>) super.getBrain(); // CraftBukkit - decompile error
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AttributeSupplier.Builder createAttributes() {
|
|
||||||
@@ -233,7 +240,7 @@
|
|
||||||
public void aiStep() {
|
|
||||||
super.aiStep();
|
|
||||||
if (!this.level().isClientSide && this.isAlive() && this.tickCount % 10 == 0) {
|
|
||||||
- this.heal(1.0F);
|
|
||||||
+ this.heal(1.0F, org.bukkit.event.entity.EntityRegainHealthEvent.RegainReason.REGEN); // CraftBukkit
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.isDancing() && this.shouldStopDancing() && this.tickCount % 20 == 0) {
|
|
||||||
@@ -303,7 +310,12 @@
|
|
||||||
ItemStack itemstack1 = this.getItemInHand(InteractionHand.MAIN_HAND);
|
|
||||||
|
|
||||||
if (this.isDancing() && itemstack.is(ItemTags.DUPLICATES_ALLAYS) && this.canDuplicate()) {
|
|
||||||
- this.duplicateAllay();
|
|
||||||
+ // CraftBukkit start - handle cancel duplication
|
|
||||||
+ Allay allay = this.duplicateAllay();
|
|
||||||
+ if (allay == null) {
|
|
||||||
+ return InteractionResult.SUCCESS;
|
|
||||||
+ }
|
|
||||||
+ // CraftBukkit end
|
|
||||||
this.level().broadcastEntityEvent(this, (byte) 18);
|
|
||||||
this.level().playSound(player, (Entity) this, SoundEvents.AMETHYST_BLOCK_CHIME, SoundSource.NEUTRAL, 2.0F, 1.0F);
|
|
||||||
this.removeInteractionItem(player, itemstack);
|
|
||||||
@@ -314,7 +326,7 @@
|
|
||||||
this.setItemInHand(InteractionHand.MAIN_HAND, itemstack2);
|
|
||||||
this.removeInteractionItem(player, itemstack);
|
|
||||||
this.level().playSound(player, (Entity) this, SoundEvents.ALLAY_ITEM_GIVEN, SoundSource.NEUTRAL, 2.0F, 1.0F);
|
|
||||||
- this.getBrain().setMemory(MemoryModuleType.LIKED_PLAYER, (Object) player.getUUID());
|
|
||||||
+ this.getBrain().setMemory(MemoryModuleType.LIKED_PLAYER, player.getUUID()); // CraftBukkit - decompile error
|
|
||||||
return InteractionResult.SUCCESS;
|
|
||||||
} else if (!itemstack1.isEmpty() && hand == InteractionHand.MAIN_HAND && itemstack.isEmpty()) {
|
|
||||||
this.setItemSlot(EquipmentSlot.MAINHAND, ItemStack.EMPTY);
|
|
||||||
@@ -415,6 +427,7 @@
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean shouldStopDancing() {
|
|
||||||
+ if (this.forceDancing) {return false;} // CraftBukkit
|
|
||||||
return this.jukeboxPos == null || !this.jukeboxPos.closerToCenterThan(this.position(), (double) ((GameEvent) GameEvent.JUKEBOX_PLAY.value()).notificationRadius()) || !this.level().getBlockState(this.jukeboxPos).is(Blocks.JUKEBOX);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -486,7 +499,7 @@
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
- this.duplicationCooldown = (long) nbt.getInt("DuplicationCooldown");
|
|
||||||
+ this.duplicationCooldown = nbt.getLong("DuplicationCooldown"); // Paper - Load as long
|
|
||||||
this.entityData.set(Allay.DATA_CAN_DUPLICATE, nbt.getBoolean("CanDuplicate"));
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -506,7 +519,7 @@
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
- public void duplicateAllay() {
|
|
||||||
+ public Allay duplicateAllay() { // CraftBukkit - return allay
|
|
||||||
Allay allay = (Allay) EntityType.ALLAY.create(this.level(), EntitySpawnReason.BREEDING);
|
|
||||||
|
|
||||||
if (allay != null) {
|
|
||||||
@@ -514,9 +527,9 @@
|
|
||||||
allay.setPersistenceRequired();
|
|
||||||
allay.resetDuplicationCooldown();
|
|
||||||
this.resetDuplicationCooldown();
|
|
||||||
- this.level().addFreshEntity(allay);
|
|
||||||
+ this.level().addFreshEntity(allay, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.DUPLICATION); // CraftBukkit - reason for duplicated allay
|
|
||||||
}
|
|
||||||
-
|
|
||||||
+ return allay; // CraftBukkit
|
|
||||||
}
|
|
||||||
|
|
||||||
public void resetDuplicationCooldown() {
|
|
||||||
Reference in New Issue
Block a user