From fe393aa73dfa82797e36813ce3b0701e332e357d Mon Sep 17 00:00:00 2001
From: Bukkit/Spigot <noreply+git-bukkit@papermc.io>
Date: Fri, 31 Dec 2010 07:53:56 -0500
Subject: [PATCH] Implemented BLOCK_FLOW

By: durron597 <martin.jared@gmail.com>
---
 .../bukkit/event/block/BlockFlowEvent.java    | 19 ++++++++++++++++---
 1 file changed, 16 insertions(+), 3 deletions(-)

diff --git a/paper-api/src/org/bukkit/event/block/BlockFlowEvent.java b/paper-api/src/org/bukkit/event/block/BlockFlowEvent.java
index df126fcf3c..c2af4c4bf9 100644
--- a/paper-api/src/org/bukkit/event/block/BlockFlowEvent.java
+++ b/paper-api/src/org/bukkit/event/block/BlockFlowEvent.java
@@ -1,6 +1,8 @@
 package org.bukkit.event.block;
 
 import java.util.HashSet;
+import java.util.List;
+
 import org.bukkit.Block;
 import org.bukkit.BlockFace;
 import org.bukkit.event.Event;
@@ -9,7 +11,7 @@ import org.bukkit.event.Event;
  * Holds information for events with a source block and a destination block
  */
 public class BlockFlowEvent extends BlockEvent {
-    protected HashSet<BlockFlow> faceList;
+    protected final HashSet<BlockFlow> faceList;
 
     public BlockFlowEvent(final Event.Type type, final Block block, BlockFace... faces) {
         super(type, block);
@@ -20,14 +22,25 @@ public class BlockFlowEvent extends BlockEvent {
         	}
         }
     }
+    
+    public BlockFlowEvent(final Event.Type type, final Block block, List<BlockFace> faces) {
+        super(type, block);
+        this.faceList = new HashSet<BlockFlow>();
+        if (faces != null && faces.size() > 0) {
+        	for (BlockFace theFace : faces) {
+        		faceList.add(new BlockFlow(theFace));
+        	}
+        }
+    }
 
     /**
-     * Gets the location this player moved to
+     * We don't want plugins changing the eligible flowing faces
+     * therefore give them a new HashSet instance
      *
      * @return Block the block is event originated from
      */
     public HashSet<BlockFlow> getFaces() {
-        return faceList;
+        return new HashSet<BlockFlow>(faceList);
     }
     
     /**