From 7d9632e3282feafe58b701c7efe4ec8b583f3bd5 Mon Sep 17 00:00:00 2001 From: Byteflux Date: Thu, 23 Jul 2015 12:57:12 -0700 Subject: [PATCH] Add BeaconEffectEvent --- .../0013-Add-BeaconEffectEvent.patch | 73 +++++++++++++++++++ .../0069-Add-BeaconEffectEvent.patch | 66 +++++++++++++++++ 2 files changed, 139 insertions(+) create mode 100644 Spigot-API-Patches/0013-Add-BeaconEffectEvent.patch create mode 100644 Spigot-Server-Patches/0069-Add-BeaconEffectEvent.patch diff --git a/Spigot-API-Patches/0013-Add-BeaconEffectEvent.patch b/Spigot-API-Patches/0013-Add-BeaconEffectEvent.patch new file mode 100644 index 0000000000..d5be89ec9c --- /dev/null +++ b/Spigot-API-Patches/0013-Add-BeaconEffectEvent.patch @@ -0,0 +1,73 @@ +From fb47713bc3aa1e7c44c50caacd86b3a29a275203 Mon Sep 17 00:00:00 2001 +From: Byteflux +Date: Thu, 23 Jul 2015 11:45:20 -0700 +Subject: [PATCH] Add BeaconEffectEvent + + +diff --git a/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java b/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java +new file mode 100644 +index 0000000..9bc14a2 +--- /dev/null ++++ b/src/main/java/org/github/paperspigot/event/block/BeaconEffectEvent.java +@@ -0,0 +1,58 @@ ++package org.github.paperspigot.event.block; ++ ++import org.bukkit.block.Block; ++import org.bukkit.entity.Player; ++import org.bukkit.event.Cancellable; ++import org.bukkit.event.HandlerList; ++import org.bukkit.event.block.BlockEvent; ++import org.bukkit.potion.PotionEffect; ++ ++public class BeaconEffectEvent extends BlockEvent implements Cancellable { ++ private static final HandlerList handlers = new HandlerList(); ++ private boolean cancelled; ++ private PotionEffect effect; ++ private Player player; ++ private boolean primary; ++ ++ public BeaconEffectEvent(Block block, PotionEffect effect, Player player, boolean primary) { ++ super(block); ++ this.effect = effect; ++ this.player = player; ++ this.primary = primary; ++ } ++ ++ @Override ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancelled) { ++ this.cancelled = cancelled; ++ } ++ ++ public PotionEffect getEffect() { ++ return effect; ++ } ++ ++ public void setEffect(PotionEffect effect) { ++ this.effect = effect; ++ } ++ ++ public Player getPlayer() { ++ return player; ++ } ++ ++ public boolean isPrimary() { ++ return primary; ++ } ++ ++ @Override ++ public HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ public static HandlerList getHandlerList() { ++ return handlers; ++ } ++} +-- +1.9.5.msysgit.1 + diff --git a/Spigot-Server-Patches/0069-Add-BeaconEffectEvent.patch b/Spigot-Server-Patches/0069-Add-BeaconEffectEvent.patch new file mode 100644 index 0000000000..d057c865b0 --- /dev/null +++ b/Spigot-Server-Patches/0069-Add-BeaconEffectEvent.patch @@ -0,0 +1,66 @@ +From 2d5e9cd7821456f0ca27163bbf734a6f18130fd6 Mon Sep 17 00:00:00 2001 +From: Byteflux +Date: Thu, 23 Jul 2015 12:44:06 -0700 +Subject: [PATCH] Add BeaconEffectEvent + + +diff --git a/src/main/java/net/minecraft/server/TileEntityBeacon.java b/src/main/java/net/minecraft/server/TileEntityBeacon.java +index 3ea1b62..a24dc68 100644 +--- a/src/main/java/net/minecraft/server/TileEntityBeacon.java ++++ b/src/main/java/net/minecraft/server/TileEntityBeacon.java +@@ -10,6 +10,14 @@ import org.bukkit.craftbukkit.entity.CraftHumanEntity; + import org.bukkit.entity.HumanEntity; + // CraftBukkit end + ++// PaperSpigot start ++import org.bukkit.craftbukkit.event.CraftEventFactory; ++import org.bukkit.entity.Player; ++import org.bukkit.potion.PotionEffect; ++import org.bukkit.potion.PotionEffectType; ++import org.github.paperspigot.event.block.BeaconEffectEvent; ++// PaperSpigot end ++ + public class TileEntityBeacon extends TileEntityContainer implements IUpdatePlayerListBox, IInventory { + + public static final MobEffectList[][] a = new MobEffectList[][] { { MobEffectList.FASTER_MOVEMENT, MobEffectList.FASTER_DIG}, { MobEffectList.RESISTANCE, MobEffectList.JUMP}, { MobEffectList.INCREASE_DAMAGE}, { MobEffectList.REGENERATION}}; +@@ -76,18 +84,35 @@ public class TileEntityBeacon extends TileEntityContainer implements IUpdatePlay + Iterator iterator = list.iterator(); + + EntityHuman entityhuman; ++ // PaperSpigot start ++ org.bukkit.block.Block block = world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()); ++ PotionEffect primaryEffect = new PotionEffect(PotionEffectType.getById(this.k), 180, b0, true, true); ++ // PaperSpigot end + + while (iterator.hasNext()) { + entityhuman = (EntityHuman) iterator.next(); +- entityhuman.addEffect(new MobEffect(this.k, 180, b0, true, true)); ++ // PaperSpigot start - BeaconEffectEvent ++ BeaconEffectEvent event = new BeaconEffectEvent(block, primaryEffect, (Player) entityhuman.getBukkitEntity(), true); ++ if (CraftEventFactory.callEvent(event).isCancelled()) continue; ++ ++ PotionEffect effect = event.getEffect(); ++ entityhuman.addEffect(new MobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles())); ++ // PaperSpigot end + } + + if (this.j >= 4 && this.k != this.l && this.l > 0) { + iterator = list.iterator(); ++ PotionEffect secondaryEffect = new PotionEffect(PotionEffectType.getById(this.l), 180, 0, true, true); // PaperSpigot + + while (iterator.hasNext()) { + entityhuman = (EntityHuman) iterator.next(); +- entityhuman.addEffect(new MobEffect(this.l, 180, 0, true, true)); ++ // PaperSpigot start - BeaconEffectEvent ++ BeaconEffectEvent event = new BeaconEffectEvent(block, secondaryEffect, (Player) entityhuman.getBukkitEntity(), false); ++ if (CraftEventFactory.callEvent(event).isCancelled()) continue; ++ ++ PotionEffect effect = event.getEffect(); ++ entityhuman.addEffect(new MobEffect(effect.getType().getId(), effect.getDuration(), effect.getAmplifier(), effect.isAmbient(), effect.hasParticles())); ++ // PaperSpigot end + } + } + } +-- +1.9.5.msysgit.1 +