Do not dump water when clicking on a door in the nether.

Fixes https://github.com/BentoBoxWorld/Greenhouses/issues/70
This commit is contained in:
tastybento 2021-01-28 20:13:27 -08:00
parent 8118280129
commit 63e6a5d3b0
1 changed files with 6 additions and 25 deletions

View File

@ -10,11 +10,9 @@ import org.bukkit.block.Block;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.block.BlockBreakEvent; import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.block.BlockPistonExtendEvent; import org.bukkit.event.block.BlockPistonExtendEvent;
import org.bukkit.event.block.BlockPlaceEvent; import org.bukkit.event.player.PlayerBucketEmptyEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerMoveEvent; import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerTeleportEvent; import org.bukkit.event.player.PlayerTeleportEvent;
@ -40,15 +38,11 @@ public class GreenhouseEvents implements Listener {
* @param e - event * @param e - event
*/ */
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled=true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled=true)
public void onPlayerInteractInNether(PlayerInteractEvent e) { public void onPlayerInteractInNether(PlayerBucketEmptyEvent e) {
if (!e.getPlayer().getWorld().getEnvironment().equals(World.Environment.NETHER)) { if (e.getPlayer().getWorld().getEnvironment().equals(World.Environment.NETHER)
return; && e.getBucket().equals(Material.WATER_BUCKET)
} && addon.getManager().getMap().inGreenhouse(e.getBlockClicked().getLocation())) {
if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK) && e.getItem() != null && e.getItem().getType().equals(Material.WATER_BUCKET) e.getBlockClicked().getRelative(e.getBlockFace()).setType(Material.WATER);
&& addon.getManager().getMap().inGreenhouse(e.getClickedBlock().getLocation())) {
e.setCancelled(true);
e.getClickedBlock().getRelative(e.getBlockFace()).setType(Material.WATER);
e.getItem().setType(Material.BUCKET);
} }
} }
@ -137,19 +131,6 @@ public class GreenhouseEvents implements Listener {
}); });
} }
/**
* Prevents placing of blocks above the greenhouses
* @param e - event
*/
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled=true)
public void onPlayerBlockPlace(final BlockPlaceEvent e) {
if (checkBlockHeight(e.getBlock())) {
e.setCancelled(true);
User user = User.getInstance(e.getPlayer());
user.sendMessage("greenhouses.error.cannot-place");
}
}
private boolean checkBlockHeight(Block block) { private boolean checkBlockHeight(Block block) {
return addon.getManager().getMap().getGreenhouse(block.getLocation()) return addon.getManager().getMap().getGreenhouse(block.getLocation())
.filter(g -> g.getCeilingHeight() < block.getY()) .filter(g -> g.getCeilingHeight() < block.getY())