more entities
This commit is contained in:
2 files changed
+30
-50
No files matched your search
+18
-28
@@ -1,22 +1,14 @@
|
||||
From 3aeeaf31b7a7f888f54e47826e8ec0ddbe65c4bf Mon Sep 17 00:00:00 2001
|
||||
From: File <noreply+automated@papermc.io>
|
||||
Date: Sun, 20 Apr 1997 14:37:42 +0100
|
||||
Subject: [PATCH] paper File Patches
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java
|
||||
index 60c2ec7a2f2d784837cea4ed54a3951c67c60453..28697020ba838c86dde5b2b11b2fe8f347a147a7 100644
|
||||
--- a/net/minecraft/world/entity/animal/Animal.java
|
||||
+++ b/net/minecraft/world/entity/animal/Animal.java
|
||||
@@ -39,6 +39,7 @@ public abstract class Animal extends AgeableMob {
|
||||
public int inLove;
|
||||
@@ -41,6 +_,7 @@
|
||||
public int inLove = 0;
|
||||
@Nullable
|
||||
public UUID loveCause;
|
||||
+ public ItemStack breedItem; // CraftBukkit - Add breedItem variable
|
||||
|
||||
protected Animal(EntityType<? extends Animal> entityType, Level level) {
|
||||
super(entityType, level);
|
||||
@@ -78,9 +79,13 @@ public abstract class Animal extends AgeableMob {
|
||||
@@ -80,9 +_,13 @@
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -32,7 +24,7 @@ index 60c2ec7a2f2d784837cea4ed54a3951c67c60453..28697020ba838c86dde5b2b11b2fe8f3
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -138,8 +143,9 @@ public abstract class Animal extends AgeableMob {
|
||||
@@ -138,8 +_,9 @@
|
||||
if (this.isFood(itemInHand)) {
|
||||
int age = this.getAge();
|
||||
if (!this.level().isClientSide && age == 0 && this.canFallInLove()) {
|
||||
@@ -43,7 +35,7 @@ index 60c2ec7a2f2d784837cea4ed54a3951c67c60453..28697020ba838c86dde5b2b11b2fe8f3
|
||||
this.playEatingSound();
|
||||
return InteractionResult.SUCCESS_SERVER;
|
||||
}
|
||||
@@ -176,11 +182,26 @@ public abstract class Animal extends AgeableMob {
|
||||
@@ -176,8 +_,23 @@
|
||||
return this.inLove <= 0;
|
||||
}
|
||||
|
||||
@@ -53,6 +45,7 @@ index 60c2ec7a2f2d784837cea4ed54a3951c67c60453..28697020ba838c86dde5b2b11b2fe8f3
|
||||
+ // Paper start - Fix EntityBreedEvent copying
|
||||
+ this.setInLove(player, null);
|
||||
+ }
|
||||
+
|
||||
+ public void setInLove(@Nullable Player player, @Nullable ItemStack breedItemCopy) {
|
||||
+ if (breedItemCopy != null) this.breedItem = breedItemCopy;
|
||||
+ // Paper end - Fix EntityBreedEvent copying
|
||||
@@ -67,17 +60,13 @@ index 60c2ec7a2f2d784837cea4ed54a3951c67c60453..28697020ba838c86dde5b2b11b2fe8f3
|
||||
if (player != null) {
|
||||
this.loveCause = player.getUUID();
|
||||
}
|
||||
+ // Paper - Fix EntityBreedEvent copying; set breed item in better place
|
||||
|
||||
this.level().broadcastEntityEvent(this, (byte)18);
|
||||
}
|
||||
@@ -220,23 +241,44 @@ public abstract class Animal extends AgeableMob {
|
||||
@@ -220,23 +_,45 @@
|
||||
if (breedOffspring != null) {
|
||||
breedOffspring.setBaby(true);
|
||||
breedOffspring.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F);
|
||||
breedOffspring.snapTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F);
|
||||
- this.finalizeSpawnChildFromBreeding(level, mate, breedOffspring);
|
||||
- level.addFreshEntityWithPassengers(breedOffspring);
|
||||
+ // CraftBukkit start - call EntityBreedEvent
|
||||
+ // CraftBukkit start - Call EntityBreedEvent
|
||||
+ ServerPlayer breeder = Optional.ofNullable(this.getLoveCause()).or(() -> Optional.ofNullable(mate.getLoveCause())).orElse(null);
|
||||
+ int experience = this.getRandom().nextInt(7) + 1;
|
||||
+ org.bukkit.event.entity.EntityBreedEvent entityBreedEvent = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(breedOffspring, this, mate, breeder, this.breedItem, experience);
|
||||
@@ -87,29 +76,30 @@ index 60c2ec7a2f2d784837cea4ed54a3951c67c60453..28697020ba838c86dde5b2b11b2fe8f3
|
||||
+ return;
|
||||
+ }
|
||||
+ experience = entityBreedEvent.getExperience();
|
||||
+
|
||||
+ this.finalizeSpawnChildFromBreeding(level, mate, breedOffspring, experience);
|
||||
+ level.addFreshEntityWithPassengers(breedOffspring, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING);
|
||||
+ // CraftBukkit end - call EntityBreedEvent
|
||||
+ // CraftBukkit end - Call EntityBreedEvent
|
||||
}
|
||||
}
|
||||
|
||||
public void finalizeSpawnChildFromBreeding(ServerLevel level, Animal animal, @Nullable AgeableMob baby) {
|
||||
- Optional.ofNullable(this.getLoveCause()).or(() -> Optional.ofNullable(animal.getLoveCause())).ifPresent(player -> {
|
||||
+ // CraftBukkit start - call EntityBreedEvent
|
||||
+ // CraftBukkit start - Call EntityBreedEvent
|
||||
+ this.finalizeSpawnChildFromBreeding(level, animal, baby, this.getRandom().nextInt(7) + 1);
|
||||
+ }
|
||||
+
|
||||
+ public void finalizeSpawnChildFromBreeding(ServerLevel level, Animal animal, @Nullable AgeableMob baby, int experience) {
|
||||
+ // CraftBukkit end - call EntityBreedEvent
|
||||
+ // Paper start - call EntityBreedEvent
|
||||
+ // CraftBukkit end - Call EntityBreedEvent
|
||||
+ // Paper start - Call EntityBreedEvent
|
||||
+ ServerPlayer player = this.getLoveCause();
|
||||
+ if (player == null) player = animal.getLoveCause();
|
||||
+ if (player != null) {
|
||||
+ // Paper end - call EntityBreedEvent
|
||||
+ // Paper end - Call EntityBreedEvent
|
||||
player.awardStat(Stats.ANIMALS_BRED);
|
||||
CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby);
|
||||
- });
|
||||
+ } // Paper - call EntityBreedEvent
|
||||
+ } // Paper - Call EntityBreedEvent
|
||||
this.setAge(6000);
|
||||
animal.setAge(6000);
|
||||
this.resetLove();
|
||||
@@ -117,8 +107,8 @@ index 60c2ec7a2f2d784837cea4ed54a3951c67c60453..28697020ba838c86dde5b2b11b2fe8f3
|
||||
level.broadcastEntityEvent(this, (byte)18);
|
||||
- if (level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
||||
- level.addFreshEntity(new ExperienceOrb(level, this.getX(), this.getY(), this.getZ(), this.getRandom().nextInt(7) + 1));
|
||||
+ if (experience > 0 && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { // Paper - call EntityBreedEvent
|
||||
+ level.addFreshEntity(new ExperienceOrb(level, this.getX(), this.getY(), this.getZ(), experience, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, player, baby)); // Paper - call EntityBreedEvent, add spawn context
|
||||
+ if (experience > 0 && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { // Paper - Call EntityBreedEvent
|
||||
+ level.addFreshEntity(new ExperienceOrb(level, this.getX(), this.getY(), this.getZ(), experience, org.bukkit.entity.ExperienceOrb.SpawnReason.BREED, player, baby)); // Paper - Call EntityBreedEvent, add spawn context
|
||||
}
|
||||
}
|
||||
|
||||
+12
-22
@@ -1,14 +1,6 @@
|
||||
From 3aeeaf31b7a7f888f54e47826e8ec0ddbe65c4bf Mon Sep 17 00:00:00 2001
|
||||
From: File <noreply+automated@papermc.io>
|
||||
Date: Sun, 20 Apr 1997 14:37:42 +0100
|
||||
Subject: [PATCH] paper File Patches
|
||||
|
||||
|
||||
diff --git a/net/minecraft/world/entity/animal/Turtle.java b/net/minecraft/world/entity/animal/Turtle.java
|
||||
index 552dcbecba44843638fe0033510e9c3af4ce445c..0e2d2dd3f2ef2783f3773a9a05c4f718991f7784 100644
|
||||
--- a/net/minecraft/world/entity/animal/Turtle.java
|
||||
+++ b/net/minecraft/world/entity/animal/Turtle.java
|
||||
@@ -303,7 +303,9 @@ public class Turtle extends Animal {
|
||||
@@ -259,7 +_,9 @@
|
||||
protected void ageBoundaryReached() {
|
||||
super.ageBoundaryReached();
|
||||
if (!this.isBaby() && this.level() instanceof ServerLevel serverLevel && serverLevel.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
||||
@@ -18,7 +10,7 @@ index 552dcbecba44843638fe0033510e9c3af4ce445c..0e2d2dd3f2ef2783f3773a9a05c4f718
|
||||
}
|
||||
}
|
||||
|
||||
@@ -328,7 +330,7 @@ public class Turtle extends Animal {
|
||||
@@ -284,7 +_,7 @@
|
||||
|
||||
@Override
|
||||
public void thunderHit(ServerLevel level, LightningBolt lightning) {
|
||||
@@ -27,7 +19,7 @@ index 552dcbecba44843638fe0033510e9c3af4ce445c..0e2d2dd3f2ef2783f3773a9a05c4f718
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -355,6 +357,10 @@ public class Turtle extends Animal {
|
||||
@@ -311,6 +_,10 @@
|
||||
if (loveCause == null && this.partner.getLoveCause() != null) {
|
||||
loveCause = this.partner.getLoveCause();
|
||||
}
|
||||
@@ -38,7 +30,7 @@ index 552dcbecba44843638fe0033510e9c3af4ce445c..0e2d2dd3f2ef2783f3773a9a05c4f718
|
||||
|
||||
if (loveCause != null) {
|
||||
loveCause.awardStat(Stats.ANIMALS_BRED);
|
||||
@@ -368,7 +374,7 @@ public class Turtle extends Animal {
|
||||
@@ -324,7 +_,7 @@
|
||||
this.partner.resetLove();
|
||||
RandomSource random = this.animal.getRandom();
|
||||
if (getServerLevel(this.level).getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
|
||||
@@ -47,34 +39,32 @@ index 552dcbecba44843638fe0033510e9c3af4ce445c..0e2d2dd3f2ef2783f3773a9a05c4f718
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -392,7 +398,7 @@ public class Turtle extends Animal {
|
||||
@@ -347,7 +_,7 @@
|
||||
&& (
|
||||
this.turtle.hasEgg()
|
||||
|| this.turtle.getRandom().nextInt(reducedTickDelay(700)) == 0
|
||||
&& !this.turtle.getHomePos().closerToCenterThan(this.turtle.position(), 64.0)
|
||||
|| this.turtle.getRandom().nextInt(reducedTickDelay(700)) == 0 && !this.turtle.homePos.closerToCenterThan(this.turtle.position(), 64.0)
|
||||
- );
|
||||
+ ) && new com.destroystokyo.paper.event.entity.TurtleGoHomeEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity()).callEvent(); // Paper - Turtle API
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -500,16 +506,22 @@ public class Turtle extends Animal {
|
||||
@@ -455,14 +_,20 @@
|
||||
BlockPos blockPos = this.turtle.blockPosition();
|
||||
if (!this.turtle.isInWater() && this.isReachedTarget()) {
|
||||
if (this.turtle.layEggCounter < 1) {
|
||||
- this.turtle.setLayingEgg(true);
|
||||
+ this.turtle.setLayingEgg(new com.destroystokyo.paper.event.entity.TurtleStartDiggingEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(this.turtle.level(), this.blockPos)).callEvent()); // Paper - Turtle API
|
||||
+ this.turtle.setLayingEgg(new com.destroystokyo.paper.event.entity.TurtleStartDiggingEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(this.blockPos, this.turtle.level())).callEvent()); // Paper - Turtle API
|
||||
} else if (this.turtle.layEggCounter > this.adjustedTickDelay(200)) {
|
||||
+ // Paper start - Turtle API
|
||||
+ int eggCount = this.turtle.random.nextInt(4) + 1;
|
||||
+ com.destroystokyo.paper.event.entity.TurtleLayEggEvent layEggEvent = new com.destroystokyo.paper.event.entity.TurtleLayEggEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity(), io.papermc.paper.util.MCUtil.toLocation(this.turtle.level(), this.blockPos.above()), eggCount);
|
||||
+ com.destroystokyo.paper.event.entity.TurtleLayEggEvent layEggEvent = new com.destroystokyo.paper.event.entity.TurtleLayEggEvent((org.bukkit.entity.Turtle) this.turtle.getBukkitEntity(), org.bukkit.craftbukkit.util.CraftLocation.toBukkit(this.blockPos.above(), this.turtle.level()), eggCount);
|
||||
+ if (layEggEvent.callEvent() && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this.turtle, this.blockPos.above(), Blocks.TURTLE_EGG.defaultBlockState().setValue(TurtleEggBlock.EGGS, layEggEvent.getEggCount()))) {
|
||||
+ // Paper end - Turtle API
|
||||
Level level = this.turtle.level();
|
||||
level.playSound(null, blockPos, SoundEvents.TURTLE_LAY_EGG, SoundSource.BLOCKS, 0.3F, 0.9F + level.random.nextFloat() * 0.2F);
|
||||
BlockPos blockPos1 = this.blockPos.above();
|
||||
BlockState blockState = Blocks.TURTLE_EGG
|
||||
.defaultBlockState()
|
||||
- .setValue(TurtleEggBlock.EGGS, Integer.valueOf(this.turtle.random.nextInt(4) + 1));
|
||||
+ .setValue(TurtleEggBlock.EGGS, layEggEvent.getEggCount()); // Paper
|
||||
- BlockState blockState = Blocks.TURTLE_EGG.defaultBlockState().setValue(TurtleEggBlock.EGGS, this.turtle.random.nextInt(4) + 1);
|
||||
+ BlockState blockState = Blocks.TURTLE_EGG.defaultBlockState().setValue(TurtleEggBlock.EGGS, layEggEvent.getEggCount()); // Paper
|
||||
level.setBlock(blockPos1, blockState, 3);
|
||||
level.gameEvent(GameEvent.BLOCK_PLACE, blockPos1, GameEvent.Context.of(this.turtle, blockState));
|
||||
+ } // CraftBukkit
|
||||
Reference in new issue
Block a user