Attributes: Allow detecting if attributes are available at all.

This commit is contained in:
asofold 2015-07-24 23:09:41 +02:00
parent 61274d30ba
commit ca07ecc3ab
10 changed files with 30 additions and 20 deletions

View File

@ -231,12 +231,12 @@ public class MCAccessBukkitBase implements MCAccess {
@Override
public double getSpeedAttributeMultiplier(Player player) {
return 1.0;
return Double.MAX_VALUE;
}
@Override
public double getSprintAttributeMultiplier(Player player) {
return player.isSprinting() ? 1.30000002 : 1.0;
return Double.MAX_VALUE;
}
@Override

View File

@ -114,12 +114,12 @@ public class MCAccessCB2512 implements MCAccess{
@Override
public double getSpeedAttributeMultiplier(Player player) {
return 1.0;
return Double.MAX_VALUE;
}
@Override
public double getSprintAttributeMultiplier(Player player) {
return player.isSprinting() ? 1.3 : 1.0;
return Double.MAX_VALUE;
}
@Override

View File

@ -114,12 +114,12 @@ public class MCAccessCB2545 implements MCAccess{
@Override
public double getSpeedAttributeMultiplier(Player player) {
return 1.0;
return Double.MAX_VALUE;
}
@Override
public double getSprintAttributeMultiplier(Player player) {
return player.isSprinting() ? 1.3 : 1.0;
return Double.MAX_VALUE;
}
@Override

View File

@ -115,12 +115,12 @@ public class MCAccessCB2602 implements MCAccess{
@Override
public double getSpeedAttributeMultiplier(Player player) {
return 1.0;
return Double.MAX_VALUE;
}
@Override
public double getSprintAttributeMultiplier(Player player) {
return player.isSprinting() ? 1.3 : 1.0;
return Double.MAX_VALUE;
}
@Override

View File

@ -116,12 +116,12 @@ public class MCAccessCB2645 implements MCAccess{
@Override
public double getSpeedAttributeMultiplier(Player player) {
return 1.0;
return Double.MAX_VALUE;
}
@Override
public double getSprintAttributeMultiplier(Player player) {
return player.isSprinting() ? 1.3 : 1.0;
return Double.MAX_VALUE;
}
@Override

View File

@ -118,12 +118,12 @@ public class MCAccessCB2691 implements MCAccess{
@Override
public double getSpeedAttributeMultiplier(Player player) {
return 1.0;
return Double.MAX_VALUE;
}
@Override
public double getSprintAttributeMultiplier(Player player) {
return player.isSprinting() ? 1.3 : 1.0;
return Double.MAX_VALUE;
}
@Override

View File

@ -116,12 +116,12 @@ public class MCAccessCB2763 implements MCAccess{
@Override
public double getSpeedAttributeMultiplier(Player player) {
return 1.0;
return Double.MAX_VALUE;
}
@Override
public double getSprintAttributeMultiplier(Player player) {
return player.isSprinting() ? 1.3 : 1.0;
return Double.MAX_VALUE;
}
@Override

View File

@ -438,8 +438,11 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
if (player.getFoodLevel() > 5) {
data.timeSprinting = time;
data.multSprinting = mcAccess.getSprintAttributeMultiplier(player);
// Server side can be inconsistent, so the multiplier might be plain wrong (1.0).
if (cc.assumeSprint && data.multSprinting == 1.0) {
if (data.multSprinting == Double.MAX_VALUE) {
data.multSprinting = 1.30000002;
}
else if (cc.assumeSprint && data.multSprinting == 1.0) {
// Server side can be inconsistent, so the multiplier might be plain wrong (1.0).
// TODO: Could be more/less than actual, but "infinite" latency would not work either.
data.multSprinting = 1.30000002;
}

View File

@ -654,7 +654,10 @@ public class SurvivalFly extends Check {
}
// Attributes in here.
hAllowedDistance *= mcAccess.getSpeedAttributeMultiplier(player);
final double attrMod = mcAccess.getSpeedAttributeMultiplier(player);
if (attrMod != Double.MAX_VALUE) {
hAllowedDistance *= attrMod;
}
// Short cut.
// TODO: Check if a) early return makes sense and b) do it for each of the following parts.

View File

@ -93,17 +93,21 @@ public interface MCAccess {
public double getFasterMovementAmplifier(Player player);
/**
* Generic speed modifier as a multiplier.
*
* @param player
* @return A multiplier for the allowed speed, excluding the sprint boost
* modifier (!). If not possible to determine, it should be 1.0.
* modifier (!). If not possible to determine, it should
* Double.MAX_VALUE.
*/
public double getSpeedAttributeMultiplier(Player player);
/**
* Modifier for sprinting.
* Sprint boost modifier as a multiplier.
*
* @param player
* @return
* @return The sprint boost modifier as a multiplier. If not possible to
* determine, it should be Double.MAX_VALUE.
*/
public double getSprintAttributeMultiplier(Player player);