Skip to content

Commit cee186e

Browse files
committed
Prevent liquid from flowing in NO_FLOW regions
1 parent b3f096b commit cee186e

File tree

1 file changed

+28
-1
lines changed

1 file changed

+28
-1
lines changed

src/main/java/org/mctourney/autoreferee/listeners/ZoneListener.java

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import org.bukkit.event.EventPriority;
1919
import org.bukkit.event.Listener;
2020
import org.bukkit.event.block.BlockBreakEvent;
21+
import org.bukkit.event.block.BlockFromToEvent;
2122
import org.bukkit.event.block.BlockPlaceEvent;
2223
import org.bukkit.event.entity.CreatureSpawnEvent;
2324
import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason;
@@ -37,7 +38,6 @@
3738
import org.bukkit.event.vehicle.VehicleEnterEvent;
3839
import org.bukkit.event.weather.WeatherChangeEvent;
3940
import org.bukkit.plugin.Plugin;
40-
4141
import org.mctourney.autoreferee.AutoRefMatch;
4242
import org.mctourney.autoreferee.AutoRefPlayer;
4343
import org.mctourney.autoreferee.AutoRefTeam;
@@ -318,6 +318,33 @@ public void blockInteract(PlayerInteractEvent event)
318318
}
319319
}
320320

321+
/*
322+
* Prevents liquids from flowing in regions flagged with NO_FLOW
323+
*/
324+
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
325+
public void onBlockFromTo(BlockFromToEvent event) {
326+
Block block = event.getToBlock();
327+
AutoRefMatch match = plugin.getMatch(block.getWorld());
328+
329+
if (match == null) return;
330+
331+
Location location = block.getLocation();
332+
333+
// .getToBlock() is strange so we must correct the block's location
334+
switch (event.getFace()) {
335+
case EAST:
336+
location = location.add(1d, 0d, 0d);
337+
case SOUTH:
338+
location = location.add(0d, 0d, 1d);
339+
default:
340+
break;
341+
}
342+
343+
if (match.hasFlag(location, AutoRefRegion.Flag.NO_FLOW)) {
344+
event.setCancelled(true); return;
345+
}
346+
}
347+
321348
@EventHandler(priority=EventPriority.HIGHEST, ignoreCancelled=true)
322349
public void entityInteract(PlayerInteractEntityEvent event)
323350
{

0 commit comments

Comments
 (0)