Skip to content

Commit 5908171

Browse files
committed
fixup previous event
1 parent c53ac8a commit 5908171

5 files changed

Lines changed: 53 additions & 39 deletions

File tree

paper-api/src/main/java/io/papermc/paper/event/player/PlayerToggleEntityAgeLockEvent.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,16 @@ public class PlayerToggleEntityAgeLockEvent extends PlayerEvent implements Cance
1818
private static final HandlerList HANDLER_LIST = new HandlerList();
1919

2020
private final LivingEntity entity;
21-
private final ItemStack itemStack;
21+
private final ItemStack item;
2222
private final EquipmentSlot hand;
2323
private final boolean ageLocked;
2424
private boolean cancelled;
2525

2626
@ApiStatus.Internal
27-
public PlayerToggleEntityAgeLockEvent(final Player player, final LivingEntity entity, final ItemStack itemStack, final EquipmentSlot hand, final boolean ageLocked) {
27+
public PlayerToggleEntityAgeLockEvent(final Player player, final LivingEntity entity, final ItemStack item, final EquipmentSlot hand, final boolean ageLocked) {
2828
super(player);
2929
this.entity = entity;
30-
this.itemStack = itemStack;
30+
this.item = item;
3131
this.hand = hand;
3232
this.ageLocked = ageLocked;
3333
}
@@ -42,8 +42,8 @@ public LivingEntity getEntity() {
4242
/**
4343
* {@return the item being used to toggle the age lock of the entity}
4444
*/
45-
public ItemStack getItemStack() {
46-
return this.itemStack.clone();
45+
public ItemStack getItem() {
46+
return this.item.clone();
4747
}
4848

4949
/**
@@ -57,7 +57,7 @@ public EquipmentSlot getHand() {
5757
* {@return whether the age of the entity is going to be locked or not}
5858
*/
5959
public boolean isAgeLocked() {
60-
return ageLocked;
60+
return this.ageLocked;
6161
}
6262

6363
@Override

paper-server/patches/features/0005-Entity-Activation-Range-2.0.patch

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ Adds villagers as separate config
1515

1616
diff --git a/io/papermc/paper/entity/activation/ActivationRange.java b/io/papermc/paper/entity/activation/ActivationRange.java
1717
new file mode 100644
18-
index 0000000000000000000000000000000000000000..c18823746ab2edcab536cb1589b7720e3af07e0f
18+
index 0000000000000000000000000000000000000000..ce6b57eeeeb1bd652f4bb53c19dcfbc05126c7e9
1919
--- /dev/null
2020
+++ b/io/papermc/paper/entity/activation/ActivationRange.java
2121
@@ -0,0 +1,334 @@
@@ -354,7 +354,7 @@ index 0000000000000000000000000000000000000000..c18823746ab2edcab536cb1589b7720e
354354
+ }
355355
+}
356356
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
357-
index 8c954add1949777b4f5658064eb7cd381d542140..ff0c463a64255af4eb417b8fa84d0ba38397d9fa 100644
357+
index 96e45eab1e8cf857f5068e911070259866d8bdcb..a0477b407d41ab7391f764b3d21352f410dde9a5 100644
358358
--- a/net/minecraft/server/level/ServerLevel.java
359359
+++ b/net/minecraft/server/level/ServerLevel.java
360360
@@ -857,6 +857,7 @@ public class ServerLevel extends Level implements WorldGenLevel, ServerEntityGet
@@ -415,10 +415,10 @@ index 8c954add1949777b4f5658064eb7cd381d542140..ff0c463a64255af4eb417b8fa84d0ba3
415415
}
416416
}
417417
diff --git a/net/minecraft/world/entity/AgeableMob.java b/net/minecraft/world/entity/AgeableMob.java
418-
index ed4ccbeaa418e97990770e7e5d663dfeb3488b8c..107729d7a25b64805710b9a2e457cbba62cf00c9 100644
418+
index 1cca5523edf4052bd3048496d38acd44f19a7c63..9f77fcd1cebf675a90adb55c6ffd34e9c5bc0aa7 100644
419419
--- a/net/minecraft/world/entity/AgeableMob.java
420420
+++ b/net/minecraft/world/entity/AgeableMob.java
421-
@@ -191,6 +191,21 @@ public abstract class AgeableMob extends PathfinderMob {
421+
@@ -189,6 +189,21 @@ public abstract class AgeableMob extends PathfinderMob {
422422
super.onSyncedDataUpdated(accessor);
423423
}
424424

@@ -441,7 +441,7 @@ index ed4ccbeaa418e97990770e7e5d663dfeb3488b8c..107729d7a25b64805710b9a2e457cbba
441441
public void aiStep() {
442442
super.aiStep();
443443
diff --git a/net/minecraft/world/entity/AreaEffectCloud.java b/net/minecraft/world/entity/AreaEffectCloud.java
444-
index 6309a615ba2525437758b1fe39c43060ec42d6f8..677b0cadec2270537d868aac7d0acaf7e6bfa2ea 100644
444+
index 0df8332933203a904bd9ef9efb3c9bce21e65441..1a502cbd8acea9420fa6dd8d716018b5ede4ba6a 100644
445445
--- a/net/minecraft/world/entity/AreaEffectCloud.java
446446
+++ b/net/minecraft/world/entity/AreaEffectCloud.java
447447
@@ -140,6 +140,16 @@ public class AreaEffectCloud extends Entity implements TraceableEntity {
@@ -462,7 +462,7 @@ index 6309a615ba2525437758b1fe39c43060ec42d6f8..677b0cadec2270537d868aac7d0acaf7
462462
public void tick() {
463463
super.tick();
464464
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
465-
index fe197ff989f084b563021ac62984e4710594402e..6a76817b135d5bf1f045c3ff263c3945bdaa8c2d 100644
465+
index f7b4da570ee28b7128b4d2cd1c67b89e3980bced..93d3fb313d538cc1067b1db010458169a1320122 100644
466466
--- a/net/minecraft/world/entity/Entity.java
467467
+++ b/net/minecraft/world/entity/Entity.java
468468
@@ -382,6 +382,15 @@ public abstract class Entity
@@ -521,7 +521,7 @@ index fe197ff989f084b563021ac62984e4710594402e..6a76817b135d5bf1f045c3ff263c3945
521521
delta = this.maybeBackOffFromEdge(delta, moverType);
522522
Vec3 movement = this.collide(delta);
523523
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
524-
index 9d579b7f17dc38c9e92447ea27ec71a8967a9964..30d518454e7a48b42242184203ab583b19b3e770 100644
524+
index c4da41f3b5ba6d8492d3776654b1ce62a5015895..6a0ebbdfcc0bc07915574c1cf87463e82213ca7e 100644
525525
--- a/net/minecraft/world/entity/LivingEntity.java
526526
+++ b/net/minecraft/world/entity/LivingEntity.java
527527
@@ -3385,6 +3385,14 @@ public abstract class LivingEntity extends Entity implements Attackable, Waypoin
@@ -639,7 +639,7 @@ index d46e0e3a4a7fc3bb3f1dd695d4cc563778b99db0..c6e9b155c2341c13d569f28f54f0c1d2
639639
}
640640
}
641641
diff --git a/net/minecraft/world/entity/item/ItemEntity.java b/net/minecraft/world/entity/item/ItemEntity.java
642-
index a4f719c1b1b6a8920068ed8969a9e780420eade1..3791ffa6a14a1b2304780382e19f0e38a59f573f 100644
642+
index c482c3348267ca2b88109e34291aa860e0cde916..b11b59d80e37d272770ab51a63028fdddfe800d6 100644
643643
--- a/net/minecraft/world/entity/item/ItemEntity.java
644644
+++ b/net/minecraft/world/entity/item/ItemEntity.java
645645
@@ -124,6 +124,29 @@ public class ItemEntity extends Entity implements TraceableEntity {
@@ -757,7 +757,7 @@ index c457a6b0935fa4dce20f93db79c27070ce147705..c9f7e68abccbc6b894a66b675952c973
757757
public void tick() {
758758
super.tick();
759759
diff --git a/net/minecraft/world/entity/projectile/arrow/Arrow.java b/net/minecraft/world/entity/projectile/arrow/Arrow.java
760-
index 23a9a11f8b9397c91ac610d858b7c1c3810095c8..d8c84e718b9c9d142925e2569afbd72e462bf5ca 100644
760+
index f3861c936855a0d9c9170585f4da4ce1cd77b854..3b4cbbc4c8ca1cd3110d1d6ba9e3531283b53c08 100644
761761
--- a/net/minecraft/world/entity/projectile/arrow/Arrow.java
762762
+++ b/net/minecraft/world/entity/projectile/arrow/Arrow.java
763763
@@ -70,6 +70,16 @@ public class Arrow extends AbstractArrow {
@@ -816,7 +816,7 @@ index 3a590d4dc980a2912e9cc043d8c8db4cf9d60803..06ab7c48b18c03af494ab10fc2b584ce
816816
+
817817
}
818818
diff --git a/net/minecraft/world/level/Level.java b/net/minecraft/world/level/Level.java
819-
index 86b37a276b33a10efc950243787e85a657b93138..9a56fc04ad397d962b56e2a3a8fedb8eddeeb89e 100644
819+
index 2569893356946511fc8c29b51220014519f7bad1..83041532ee49be800c66995ad64d570270349fb6 100644
820820
--- a/net/minecraft/world/level/Level.java
821821
+++ b/net/minecraft/world/level/Level.java
822822
@@ -154,6 +154,12 @@ public abstract class Level implements LevelAccessor, AutoCloseable, ca.spottedl
Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,14 @@
11
--- a/net/minecraft/world/entity/AgeableMob.java
22
+++ b/net/minecraft/world/entity/AgeableMob.java
3-
@@ -68,7 +_,7 @@
3+
@@ -68,6 +_,11 @@
44
protected InteractionResult mobInteract(final Player player, final InteractionHand hand) {
55
ItemStack itemInHand = player.getItemInHand(hand);
66
if (canUseGoldenDandelion(itemInHand, this.isBaby(), this.ageLockParticleTimer, this)) {
7-
- setAgeLocked(this, this::isAgeLocked, player, itemInHand, mob -> this.setAgeLockedData());
8-
+ setAgeLocked(this, this::isAgeLocked, player, itemInHand, mob -> this.setAgeLockedData(), hand); // Paper - toggle entity age lock event - add hand
7+
+ // Paper start - call PlayerToggleEntityAgeLockEvent
8+
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerToggleEntityAgeLockEvent(player, this, itemInHand, hand, !this.isAgeLocked(), AGE_LOCKED)) {
9+
+ return InteractionResult.SUCCESS;
10+
+ }
11+
+ // Paper end - call PlayerToggleEntityAgeLockEvent
12+
setAgeLocked(this, this::isAgeLocked, player, itemInHand, mob -> this.setAgeLockedData());
913
return InteractionResult.SUCCESS;
1014
} else {
11-
return super.mobInteract(player, hand);
12-
@@ -87,7 +_,14 @@
13-
14-
public static void setAgeLocked(
15-
final Mob mob, final Supplier<Boolean> isAgedLocked, final Player player, final ItemStack itemInHand, final Consumer<Mob> setAgeLockData
16-
+ , final InteractionHand hand // Paper - toggle entity age lock event - add hand
17-
) {
18-
+ // Paper start - toggle entity age lock event
19-
+ if (!new io.papermc.paper.event.player.PlayerToggleEntityAgeLockEvent((org.bukkit.entity.Player) player.getBukkitEntity(), mob.getBukkitLivingEntity(), itemInHand.asBukkitCopy(), org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand), isAgedLocked.get()).callEvent()) {
20-
+ player.inventoryMenu.forceHeldSlot(hand);
21-
+ return;
22-
+ }
23-
+ // Paper end - toggle entity age lock event
24-
setAgeLockData.accept(mob);
25-
itemInHand.consume(1, player);
26-
boolean isAgeLocked = isAgedLocked.get();

paper-server/patches/sources/net/minecraft/world/entity/animal/frog/Tadpole.java.patch

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,18 @@
99
this.entityData.set(AGE_LOCKED, locked);
1010
}
1111

12-
@@ -157,7 +_,7 @@
12+
@@ -157,6 +_,11 @@
1313
this.feed(player, itemStack);
1414
return InteractionResult.SUCCESS;
1515
} else if (AgeableMob.canUseGoldenDandelion(itemStack, true, this.ageLockParticleTimer, this)) {
16-
- AgeableMob.setAgeLocked(this, this::isAgeLocked, player, itemStack, mob -> this.setAgeLockedData());
17-
+ AgeableMob.setAgeLocked(this, this::isAgeLocked, player, itemStack, mob -> this.setAgeLockedData(), hand); // Paper - toggle entity age lock event - add hand
16+
+ // Paper start - call PlayerToggleEntityAgeLockEvent
17+
+ if (!org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerToggleEntityAgeLockEvent(player, this, itemStack, hand, !this.isAgeLocked(), AGE_LOCKED)) {
18+
+ return InteractionResult.SUCCESS;
19+
+ }
20+
+ // Paper end - call PlayerToggleEntityAgeLockEvent
21+
AgeableMob.setAgeLocked(this, this::isAgeLocked, player, itemStack, mob -> this.setAgeLockedData());
1822
return InteractionResult.SUCCESS;
1923
} else {
20-
return Bucketable.bucketMobPickup(player, hand, this).orElse(super.mobInteract(player, hand));
2124
@@ -236,12 +_,17 @@
2225

2326
private void ageUp() {

paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import io.papermc.paper.event.connection.PlayerConnectionValidateLoginEvent;
1515
import io.papermc.paper.event.entity.ItemTransportingEntityValidateTargetEvent;
1616
import io.papermc.paper.event.player.PlayerBedFailEnterEvent;
17+
import io.papermc.paper.event.player.PlayerToggleEntityAgeLockEvent;
1718
import java.util.ArrayList;
1819
import java.util.Collections;
1920
import java.util.EnumMap;
@@ -27,6 +28,7 @@
2728
import net.minecraft.network.Connection;
2829
import net.minecraft.network.chat.Component;
2930
import net.minecraft.network.protocol.game.ServerboundContainerClosePacket;
31+
import net.minecraft.network.syncher.EntityDataAccessor;
3032
import net.minecraft.server.MinecraftServer;
3133
import net.minecraft.server.level.ServerLevel;
3234
import net.minecraft.server.level.ServerPlayer;
@@ -2394,4 +2396,25 @@ public static boolean sendChestLockedNotifications(Vec3 pos) {
23942396
}
23952397
return false;
23962398
}
2399+
2400+
public static boolean callPlayerToggleEntityAgeLockEvent(net.minecraft.world.entity.player.Player player, Mob target, ItemStack itemUsed, InteractionHand hand, boolean ageLocked, @Nullable EntityDataAccessor<?> accessorToResync) {
2401+
PlayerToggleEntityAgeLockEvent event = new PlayerToggleEntityAgeLockEvent(
2402+
(org.bukkit.entity.Player) player.getBukkitEntity(),
2403+
(LivingEntity) target.getBukkitEntity(),
2404+
itemUsed.asBukkitCopy(),
2405+
org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand),
2406+
ageLocked
2407+
);
2408+
2409+
if (!event.callEvent()) {
2410+
if (accessorToResync != null && player instanceof ServerPlayer serverPlayer) {
2411+
target.resendPossiblyDesyncedDataValues(List.of(accessorToResync), serverPlayer);
2412+
}
2413+
if (!player.hasInfiniteMaterials()) {
2414+
player.inventoryMenu.forceHeldSlot(hand);
2415+
}
2416+
return false;
2417+
}
2418+
return true;
2419+
}
23972420
}

0 commit comments

Comments
 (0)