|
50 | 50 |
|
51 | 51 | this.level().broadcastEntityEvent(this, (byte)18); |
52 | 52 | } |
53 | | -@@ -201,15 +_,43 @@ |
| 53 | +@@ -199,13 +_,41 @@ |
| 54 | + } |
| 55 | + } |
54 | 56 |
|
| 57 | ++ // Magma start - mixin support |
| 58 | ++ private java.util.concurrent.atomic.AtomicInteger magma$experience = new java.util.concurrent.atomic.AtomicInteger(0); |
| 59 | ++ // Magma end |
| 60 | ++ |
55 | 61 | public void spawnChildFromBreeding(ServerLevel p_27564_, Animal p_27565_) { |
56 | 62 | AgeableMob ageablemob = this.getBreedOffspring(p_27564_, p_27565_); |
57 | 63 | + final net.neoforged.neoforge.event.entity.living.BabyEntitySpawnEvent event = new net.neoforged.neoforge.event.entity.living.BabyEntitySpawnEvent(this, p_27565_, ageablemob); |
|
68 | 74 | if (ageablemob != null) { |
69 | 75 | ageablemob.setBaby(true); |
70 | 76 | ageablemob.moveTo(this.getX(), this.getY(), this.getZ(), 0.0F, 0.0F); |
71 | | -- this.finalizeSpawnChildFromBreeding(p_27564_, p_27565_, ageablemob); |
72 | | -- p_27564_.addFreshEntityWithPassengers(ageablemob); |
73 | 77 | + // CraftBukkit start - call EntityBreedEvent |
74 | 78 | + ServerPlayer breeder = Optional.ofNullable(this.getLoveCause()).or(() -> { |
75 | 79 | + return Optional.ofNullable(p_27565_.getLoveCause()); |
|
80 | 84 | + return; |
81 | 85 | + } |
82 | 86 | + experience = entityBreedEvent.getExperience(); |
83 | | -+ this.finalizeSpawnChildFromBreeding(p_27564_, p_27565_, ageablemob, experience); |
84 | | -+ p_27564_.addFreshEntityWithPassengers(ageablemob, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); |
| 87 | ++ this.magma$experience.set(experience); |
| 88 | + this.finalizeSpawnChildFromBreeding(p_27564_, p_27565_, ageablemob); |
| 89 | ++ p_27564_.setSpawnReason(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // Magma - spawn reason |
| 90 | + p_27564_.addFreshEntityWithPassengers(ageablemob); |
85 | 91 | + // CraftBukkit end |
86 | 92 | } |
87 | 93 | } |
88 | 94 |
|
89 | | - public void finalizeSpawnChildFromBreeding(ServerLevel p_277963_, Animal p_277357_, @Nullable AgeableMob p_277516_) { |
90 | | -+ // CraftBukkit start |
91 | | -+ this.finalizeSpawnChildFromBreeding(p_277963_, p_277357_, p_277516_, this.getRandom().nextInt(7) + 1); |
92 | | -+ } |
93 | | -+ |
94 | | -+ public void finalizeSpawnChildFromBreeding(ServerLevel p_277963_, Animal p_277357_, @Nullable AgeableMob p_277516_, int experience) { |
95 | | -+ // CraftBukkit end |
96 | | - Optional.ofNullable(this.getLoveCause()).or(() -> Optional.ofNullable(p_277357_.getLoveCause())).ifPresent(p_277486_ -> { |
97 | | - p_277486_.awardStat(Stats.ANIMALS_BRED); |
98 | | - CriteriaTriggers.BRED_ANIMALS.trigger(p_277486_, this, p_277357_, p_277516_); |
99 | | -@@ -220,7 +_,11 @@ |
| 95 | +@@ -220,7 +_,12 @@ |
100 | 96 | p_277357_.resetLove(); |
101 | 97 | p_277963_.broadcastEntityEvent(this, (byte)18); |
102 | 98 | if (p_277963_.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { |
103 | 99 | - p_277963_.addFreshEntity(new ExperienceOrb(p_277963_, this.getX(), this.getY(), this.getZ(), this.getRandom().nextInt(7) + 1)); |
| 100 | ++ var experience = this.magma$experience.getAndSet(0); |
104 | 101 | + // CraftBukkit start - use event experience |
105 | 102 | + if (experience > 0) { |
106 | 103 | + p_277963_.addFreshEntity(new ExperienceOrb(p_277963_, this.getX(), this.getY(), this.getZ(), experience)); |
|
0 commit comments