mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-12-30 20:37:52 +01:00
Move boatsanywhere to blockplace.
This commit is contained in:
parent
c1bb11a725
commit
448ae2249b
@ -106,6 +106,8 @@ permissions:
|
||||
description: Allow the player to place blocks against liquids.
|
||||
nocheatplus.checks.blockplace.against.air:
|
||||
description: Allow the player to place blocks against air.
|
||||
nocheatplus.checks.blockplace.boatsanywhere:
|
||||
description: Allow the player to place boats on the ground.
|
||||
nocheatplus.checks.blockplace.direction:
|
||||
description: Allow the player to bypass to Direction check.
|
||||
nocheatplus.checks.blockplace.fastplace:
|
||||
@ -170,8 +172,6 @@ permissions:
|
||||
nocheatplus.checks.moving:
|
||||
description: Allow the player to bypass all Moving checks.
|
||||
children:
|
||||
nocheatplus.checks.moving.boatsanywhere:
|
||||
description: Allow the player to place boats on the ground.
|
||||
nocheatplus.checks.moving.creativefly:
|
||||
description: Allow the player to bypass the CreativeFly check.
|
||||
nocheatplus.checks.moving.morepackets:
|
||||
|
@ -13,6 +13,7 @@ import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.ProjectileLaunchEvent;
|
||||
import org.bukkit.event.player.PlayerAnimationEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import fr.neatmonster.nocheatplus.checks.combined.Combined;
|
||||
import fr.neatmonster.nocheatplus.checks.combined.Improbable;
|
||||
@ -164,18 +165,39 @@ public class BlockPlaceListener implements Listener {
|
||||
* |_| |_|\__,_|\__, |\___|_| |___|_| |_|\__\___|_| \__,_|\___|\__|
|
||||
* |___/
|
||||
*/
|
||||
// We are only interested by monster eggs.
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK || event.getPlayer().getItemInHand() == null
|
||||
|| event.getPlayer().getItemInHand().getType() != Material.MONSTER_EGG)
|
||||
return;
|
||||
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
final Player player = event.getPlayer();
|
||||
|
||||
// Do the actual check...
|
||||
final ItemStack stack = player.getItemInHand();
|
||||
if (stack == null) return;
|
||||
|
||||
final Material type = stack.getType();
|
||||
|
||||
if (type == Material.BOAT){
|
||||
// Check boats-anywhere.
|
||||
final org.bukkit.block.Block block = event.getClickedBlock();
|
||||
final Material mat = block.getType();
|
||||
|
||||
// TODO: allow lava ?
|
||||
if (mat == Material.WATER || mat == Material.STATIONARY_WATER) return;
|
||||
|
||||
final org.bukkit.block.Block relBlock = block.getRelative(event.getBlockFace());
|
||||
final Material relMat = relBlock.getType();
|
||||
|
||||
if (relMat == Material.WATER || relMat == Material.STATIONARY_WATER) return;
|
||||
|
||||
if (!player.hasPermission(Permissions.BLOCKPLACE_BOATSANYWHERE)){
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
}
|
||||
else if (type == Material.MONSTER_EGG){
|
||||
// Check blockplace.speed.
|
||||
if (speed.isEnabled(player) && speed.check(player))
|
||||
// If the check was positive, cancel the event.
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* We listen to ProjectileLaunch events to prevent players from launching projectiles too quickly.
|
||||
|
@ -16,7 +16,6 @@ import org.bukkit.entity.Vehicle;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.Action;
|
||||
import org.bukkit.event.block.BlockPlaceEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
|
||||
@ -25,7 +24,6 @@ import org.bukkit.event.player.PlayerBedEnterEvent;
|
||||
import org.bukkit.event.player.PlayerBedLeaveEvent;
|
||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
|
||||
import org.bukkit.event.player.PlayerGameModeChangeEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerKickEvent;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
@ -288,43 +286,6 @@ public class MovingListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* We listen to this event to cancel the placement of boat the ground. Boats are made to float on water, right?
|
||||
*
|
||||
* @param event
|
||||
* the event
|
||||
*/
|
||||
@EventHandler(
|
||||
ignoreCancelled = true, priority = EventPriority.LOWEST)
|
||||
public void onPlayerInteract(final PlayerInteractEvent event) {
|
||||
/*
|
||||
* ____ _ ___ _ _
|
||||
* | _ \| | __ _ _ _ ___ _ __ |_ _|_ __ | |_ ___ _ __ __ _ ___| |_
|
||||
* | |_) | |/ _` | | | |/ _ \ '__| | || '_ \| __/ _ \ '__/ _` |/ __| __|
|
||||
* | __/| | (_| | |_| | __/ | | || | | | || __/ | | (_| | (__| |_
|
||||
* |_| |_|\__,_|\__, |\___|_| |___|_| |_|\__\___|_| \__,_|\___|\__|
|
||||
* |___/
|
||||
*/
|
||||
// If the player right clicked on a non-liquid block with a boat in his hands, cancel the event.
|
||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||
|
||||
final Player player = event.getPlayer();
|
||||
if (player.getItemInHand().getType() != Material.BOAT) return;
|
||||
if (event.getPlayer().hasPermission(Permissions.MOVING_BOATSANYWHERE)) return;
|
||||
|
||||
final org.bukkit.block.Block block = event.getClickedBlock();
|
||||
final Material mat = block.getType();
|
||||
|
||||
if (mat == Material.WATER || mat == Material.STATIONARY_WATER) return;
|
||||
|
||||
final org.bukkit.block.Block relBlock = block.getRelative(event.getBlockFace());
|
||||
final Material relMat = relBlock.getType();
|
||||
|
||||
if (relMat == Material.WATER || relMat == Material.STATIONARY_WATER) return;
|
||||
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
/**
|
||||
* When a player moves, he will be checked for various suspicious behaviors.<br>
|
||||
* (lowest priority)
|
||||
|
@ -93,6 +93,7 @@ public class Permissions {
|
||||
public static final String BLOCKPLACE_AGAINST = BLOCKPLACE + ".against";
|
||||
public static final String BLOCKPLACE_AGAINST_AIR = BLOCKPLACE_AGAINST + ".air";
|
||||
public static final String BLOCKPLACE_AGAINST_LIQUIDS = BLOCKPLACE_AGAINST + ".liquids";
|
||||
public static final String BLOCKPLACE_BOATSANYWHERE = BLOCKPLACE + ".boatsanywhere";
|
||||
public static final String BLOCKPLACE_DIRECTION = BLOCKPLACE + ".direction";
|
||||
public static final String BLOCKPLACE_FASTPLACE = BLOCKPLACE + ".fastplace";
|
||||
public static final String BLOCKPLACE_NOSWING = BLOCKPLACE + ".noswing";
|
||||
@ -166,7 +167,6 @@ public class Permissions {
|
||||
* "8",P"
|
||||
*/
|
||||
public static final String MOVING = CHECKS + ".moving";
|
||||
public static final String MOVING_BOATSANYWHERE = MOVING + ".boatsanywhere";
|
||||
public static final String MOVING_CREATIVEFLY = MOVING + ".creativefly";
|
||||
public static final String MOVING_MOREPACKETS = MOVING + ".morepackets";
|
||||
public static final String MOVING_MOREPACKETSVEHICLE = MOVING + ".morepacketsvehicle";
|
||||
|
Loading…
Reference in New Issue
Block a user