geforkt von Mirrors/Paper
89d51d5f29
Because this exploit has been widely known for years and has not been fixed by Mojang, we decided that it was worth allowing people to toggle it on/off due to how easy it is to make it configurable. It should be noted that this decision does not promise all future exploits will be configurable.
38 Zeilen
2.4 KiB
Diff
38 Zeilen
2.4 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Jake Potrebic <jake.m.potrebic@gmail.com>
|
|
Date: Wed, 24 Jun 2020 15:14:51 -0600
|
|
Subject: [PATCH] Add PlayerChangeBeaconEffectEvent
|
|
|
|
|
|
diff --git a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java
|
|
index e6a4e8dcdbc49b427c2802f1a358f8f9ad04d0f0..b670c0cb3886c99d38a91b5c13aa2cefaae702cf 100644
|
|
--- a/src/main/java/net/minecraft/world/inventory/BeaconMenu.java
|
|
+++ b/src/main/java/net/minecraft/world/inventory/BeaconMenu.java
|
|
@@ -170,12 +170,24 @@ public class BeaconMenu extends AbstractContainerMenu {
|
|
return BeaconMenu.decodeEffect(this.beaconData.get(2));
|
|
}
|
|
|
|
+ // Paper start - Add PlayerChangeBeaconEffectEvent
|
|
+ private static @Nullable org.bukkit.potion.PotionEffectType convert(Optional<MobEffect> optionalEffect) {
|
|
+ return optionalEffect.map(org.bukkit.craftbukkit.potion.CraftPotionEffectType::minecraftToBukkit).orElse(null);
|
|
+ }
|
|
+ // Paper end - Add PlayerChangeBeaconEffectEvent
|
|
+
|
|
public void updateEffects(Optional<MobEffect> primary, Optional<MobEffect> secondary) {
|
|
if (this.paymentSlot.hasItem()) {
|
|
- this.beaconData.set(1, BeaconMenu.encodeEffect((MobEffect) primary.orElse(null))); // CraftBukkit - decompile error
|
|
- this.beaconData.set(2, BeaconMenu.encodeEffect((MobEffect) secondary.orElse(null))); // CraftBukkit - decompile error
|
|
+ // Paper start - Add PlayerChangeBeaconEffectEvent
|
|
+ io.papermc.paper.event.player.PlayerChangeBeaconEffectEvent event = new io.papermc.paper.event.player.PlayerChangeBeaconEffectEvent((org.bukkit.entity.Player) this.player.player.getBukkitEntity(), convert(primary), convert(secondary), this.access.getLocation().getBlock());
|
|
+ if (event.callEvent()) {
|
|
+ this.beaconData.set(1, BeaconMenu.encodeEffect(event.getPrimary() == null ? null : org.bukkit.craftbukkit.potion.CraftPotionEffectType.bukkitToMinecraft(event.getPrimary())));
|
|
+ this.beaconData.set(2, BeaconMenu.encodeEffect(event.getSecondary() == null ? null : org.bukkit.craftbukkit.potion.CraftPotionEffectType.bukkitToMinecraft(event.getSecondary())));
|
|
+ if (event.willConsumeItem()) {
|
|
this.paymentSlot.remove(1);
|
|
+ }
|
|
this.access.execute(Level::blockEntityChanged);
|
|
+ } // Paper end - Add PlayerChangeBeaconEffectEvent
|
|
}
|
|
|
|
}
|