mirror of
https://github.com/NoCheatPlus/NoCheatPlus.git
synced 2024-10-06 10:27:26 +02:00
Rewritten "onliquid" check to maybe avoid problems some people have
This commit is contained in:
parent
248a4867a6
commit
3943812b8c
@ -2,7 +2,9 @@ package cc.co.evenprime.bukkit.nocheat.checks.blockplace;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import cc.co.evenprime.bukkit.nocheat.NoCheat;
|
||||
@ -15,7 +17,7 @@ import cc.co.evenprime.bukkit.nocheat.data.BlockPlaceData;
|
||||
/**
|
||||
*
|
||||
* @author Evenprime
|
||||
*
|
||||
*
|
||||
*/
|
||||
public class OnLiquidCheck {
|
||||
|
||||
@ -24,15 +26,18 @@ public class OnLiquidCheck {
|
||||
public OnLiquidCheck(NoCheat plugin) {
|
||||
action = new ActionExecutorWithHistory(plugin);
|
||||
}
|
||||
|
||||
|
||||
public boolean check(Player player, Block blockPlaced, Block blockPlacedAgainst, BlockPlaceData data, ConfigurationCache cc) {
|
||||
|
||||
boolean cancel = false;
|
||||
|
||||
if(blockPlaced == null || blockPlaced.isLiquid() || blockPlaced.isEmpty()) {
|
||||
// all ok
|
||||
} else if(blockPlacedAgainst != null && (blockPlacedAgainst.isLiquid() || blockPlacedAgainst.isEmpty())) {
|
||||
|
||||
if(blockPlaced == null) {
|
||||
// all ok
|
||||
} else if(blockPlacedAgainst != null && isSolid(blockPlacedAgainst)) {
|
||||
// all ok
|
||||
} else if(isSolid(blockPlaced.getRelative(BlockFace.DOWN)) || isSolid(blockPlaced.getRelative(BlockFace.WEST)) || isSolid(blockPlaced.getRelative(BlockFace.EAST)) || isSolid(blockPlaced.getRelative(BlockFace.NORTH)) || isSolid(blockPlaced.getRelative(BlockFace.SOUTH)) || isSolid(blockPlaced.getRelative(BlockFace.UP))) {
|
||||
// all ok
|
||||
} else {
|
||||
data.onliquidViolationLevel += 1;
|
||||
HashMap<String, String> params = new HashMap<String, String>();
|
||||
params.put(LogAction.CHECK, "blockplace.onliquid");
|
||||
@ -41,7 +46,12 @@ public class OnLiquidCheck {
|
||||
}
|
||||
|
||||
data.onliquidViolationLevel *= 0.95D; // Reduce level over time
|
||||
|
||||
|
||||
return cancel;
|
||||
}
|
||||
|
||||
public boolean isSolid(Block block) {
|
||||
Material m = block.getType();
|
||||
return !(m == Material.AIR) || (m == Material.WATER) || (m == Material.STATIONARY_WATER) || (m == Material.LAVA) || (m == Material.STATIONARY_LAVA);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user