下面列出了org.bukkit.Material#LADDER 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
@Override
public int process(User user, BlockPlaceEvent event)
{
// Ladders are prone to false positives as they can be used to place blocks immediately after placing them,
// therefore almost doubling the placement speed. However they can only be placed one at a time, which allows
// simply ignoring them.
if (event.getBlockPlaced().getType() != Material.LADDER
// Should check average?
// Buffer the ScaffoldBlockPlace
&& user.getScaffoldData().getScaffoldBlockPlaces().bufferObject(new ScaffoldBlockPlace(
event.getBlockPlaced(),
event.getBlockPlaced().getFace(event.getBlockAgainst()),
// Speed-Effect
PotionUtil.getAmplifier(PotionUtil.getPotionEffect(user.getPlayer(), PotionEffectType.SPEED)),
user.getPlayer().getLocation().getYaw(),
user.hasSneakedRecently(175))))
{
/*
Indices:
[0] -> Expected time
[1] -> Real time
*/
final double[] results = user.getScaffoldData().calculateTimes();
// delta-times are too low -> flag
if (results[1] < results[0]) {
// Calculate the vl
final int vlIncrease = (int) (4 * Math.min(Math.ceil((results[0] - results[1]) / 15D), 6));
message = "Scaffold-Verbose | Player: " + user.getPlayer().getName() + " enforced delay: " + results[0] + " | real: " + results[1] + " | vl increase: " + vlIncrease;
return vlIncrease;
}
}
return 0;
}
static boolean isClimbable(Material material) {
return material == Material.LADDER || material == Material.VINE;
}
public Ladder() {
super(Material.LADDER);
}
private boolean isInClimbable(Location loc) {
Block b = ServerUtils.getBlockAsync(loc);
return b != null && (b.getType() == Material.VINE || b.getType() == Material.LADDER);
}
private boolean isInClimbable(Location loc) {
Block b = ServerUtils.getBlockAsync(loc);
return b != null && (b.getType() == Material.VINE || b.getType() == Material.LADDER);
}
public static boolean isClimbable(Material material) {
return material == Material.LADDER || material == Material.VINE;
}
public LadderChecker() {
super(Material.LADDER);
}