Skip to content

Commit 709c534

Browse files
committed
fix: mixins issues with the mod Pehkui
1 parent dbd39f0 commit 709c534

6 files changed

Lines changed: 28 additions & 32 deletions

File tree

patches/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
--- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
22
+++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
3-
@@ -107,11 +_,19 @@
3+
@@ -107,11 +_,20 @@
44
if (villager == null) {
55
return Optional.empty();
66
} else {
77
- p_24657_.setAge(6000);
88
- p_24658_.setAge(6000);
99
villager.setAge(-24000);
1010
villager.moveTo(p_24657_.getX(), p_24657_.getY(), p_24657_.getZ(), 0.0F, 0.0F);
11-
- p_24656_.addFreshEntityWithPassengers(villager);
1211
+ // CraftBukkit start - call EntityBreedEvent
1312
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityBreedEvent(villager, p_24657_, p_24658_, null, null, 0).isCancelled()) {
1413
+ return Optional.empty();
1514
+ }
1615
+ // Move age setting down
1716
+ p_24657_.setAge(6000);
1817
+ p_24658_.setAge(6000);
19-
+ p_24656_.addFreshEntityWithPassengers(villager, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING);
18+
+ p_24656_.setSpawnReason(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // Magma
19+
p_24656_.addFreshEntityWithPassengers(villager);
2020
+ // CraftBukkit end
2121
+ // Neo: If villager is blocked from spawning (e.g., FinalizeSpawnEvent), then breed should be unsuccessful
2222
+ if (!villager.isAddedToLevel()) return Optional.empty();

patches/net/minecraft/world/entity/animal/Animal.java.patch

Lines changed: 13 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,14 @@
5050

5151
this.level().broadcastEntityEvent(this, (byte)18);
5252
}
53-
@@ -201,15 +_,43 @@
53+
@@ -199,13 +_,41 @@
54+
}
55+
}
5456

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+
+
5561
public void spawnChildFromBreeding(ServerLevel p_27564_, Animal p_27565_) {
5662
AgeableMob ageablemob = this.getBreedOffspring(p_27564_, p_27565_);
5763
+ final net.neoforged.neoforge.event.entity.living.BabyEntitySpawnEvent event = new net.neoforged.neoforge.event.entity.living.BabyEntitySpawnEvent(this, p_27565_, ageablemob);
@@ -68,8 +74,6 @@
6874
if (ageablemob != null) {
6975
ageablemob.setBaby(true);
7076
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);
7377
+ // CraftBukkit start - call EntityBreedEvent
7478
+ ServerPlayer breeder = Optional.ofNullable(this.getLoveCause()).or(() -> {
7579
+ return Optional.ofNullable(p_27565_.getLoveCause());
@@ -80,27 +84,20 @@
8084
+ return;
8185
+ }
8286
+ 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);
8591
+ // CraftBukkit end
8692
}
8793
}
8894

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 @@
10096
p_277357_.resetLove();
10197
p_277963_.broadcastEntityEvent(this, (byte)18);
10298
if (p_277963_.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
10399
- 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);
104101
+ // CraftBukkit start - use event experience
105102
+ if (experience > 0) {
106103
+ p_277963_.addFreshEntity(new ExperienceOrb(p_277963_, this.getX(), this.getY(), this.getZ(), experience));

patches/net/minecraft/world/entity/animal/Fox.java.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,14 +62,14 @@
6262

6363
if (serverplayer2 != null) {
6464
serverplayer2.awardStat(Stats.ANIMALS_BRED);
65-
@@ -865,15 +_,14 @@
65+
@@ -865,15 +_,15 @@
6666
this.partner.setAge(6000);
6767
this.animal.resetLove();
6868
this.partner.resetLove();
6969
- fox.setAge(-24000);
7070
- fox.moveTo(this.animal.getX(), this.animal.getY(), this.animal.getZ(), 0.0F, 0.0F);
71-
- serverlevel.addFreshEntityWithPassengers(fox);
72-
+ serverlevel.addFreshEntityWithPassengers(fox, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // CraftBukkit - added SpawnReason
71+
+ serverlevel.setSpawnReason(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING); // Magma
72+
serverlevel.addFreshEntityWithPassengers(fox);
7373
this.level.broadcastEntityEvent(this.animal, (byte)18);
7474
if (this.level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) {
7575
- this.level

patches/net/minecraft/world/entity/monster/Evoker.java.patch

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
--- a/net/minecraft/world/entity/monster/Evoker.java
22
+++ b/net/minecraft/world/entity/monster/Evoker.java
3-
@@ -275,7 +_,7 @@
3+
@@ -275,6 +_,7 @@
44
serverlevel.getScoreboard().addPlayerToTeam(vex.getScoreboardName(), playerteam);
55
}
66

7-
- serverlevel.addFreshEntityWithPassengers(vex);
8-
+ serverlevel.addFreshEntityWithPassengers(vex, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPELL); // CraftBukkit - Add SpawnReason
7+
+ serverlevel.setSpawnReason(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.SPELL); // Magma
8+
serverlevel.addFreshEntityWithPassengers(vex);
99
serverlevel.gameEvent(GameEvent.ENTITY_PLACE, blockpos, GameEvent.Context.of(Evoker.this));
1010
}
11-
}
1211
@@ -305,7 +_,7 @@
1312
return false;
1413
} else if (Evoker.this.tickCount < this.nextAttackTickCount) {

patches/net/minecraft/world/entity/projectile/ThrownEgg.java.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/net/minecraft/world/entity/projectile/ThrownEgg.java
22
+++ b/net/minecraft/world/entity/projectile/ThrownEgg.java
3-
@@ -57,27 +_,57 @@
3+
@@ -57,27 +_,58 @@
44
protected void onHit(HitResult p_37488_) {
55
super.onHit(p_37488_);
66
if (!this.level().isClientSide) {
@@ -51,8 +51,8 @@
5151
break;
5252
}
5353

54-
- this.level().addFreshEntity(chicken);
55-
+ this.level().addFreshEntity(chicken, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.EGG); // CraftBukkit
54+
+ this.level().setSpawnReason(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.EGG); // Magma
55+
this.level().addFreshEntity(chicken);
5656
}
5757
}
5858
}

patches/net/minecraft/world/entity/projectile/ThrownEnderpearl.java.patch

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
22
+++ b/net/minecraft/world/entity/projectile/ThrownEnderpearl.java
3-
@@ -66,23 +_,30 @@
3+
@@ -66,23 +_,31 @@
44

55
if (entity instanceof ServerPlayer serverplayer) {
66
if (serverplayer.connection.isAcceptingMessages()) {
@@ -18,8 +18,8 @@
1818
Endermite endermite = EntityType.ENDERMITE.create(serverlevel);
1919
if (endermite != null) {
2020
endermite.moveTo(entity.getX(), entity.getY(), entity.getZ(), entity.getYRot(), entity.getXRot());
21-
- serverlevel.addFreshEntity(endermite);
22-
+ serverlevel.addFreshEntity(endermite, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL);
21+
+ serverlevel.setSpawnReason(org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.ENDER_PEARL); // Magma
22+
serverlevel.addFreshEntity(endermite);
2323
}
2424
}
2525

0 commit comments

Comments
 (0)