Add fall-back configurability for latest addition.

This commit is contained in:
asofold 2013-11-05 22:18:55 +01:00
parent f597f8bded
commit ee5c86bb4f
4 changed files with 27 additions and 14 deletions

View File

@ -146,6 +146,8 @@ public class MovingConfig extends ACheckConfig {
public final boolean loadChunksOnJoin; public final boolean loadChunksOnJoin;
public final long sprintingGrace; public final long sprintingGrace;
public final int speedGrace; public final int speedGrace;
public final boolean vehicleEnforceLocation;
public final boolean vehiclePreventDestroyOwn;
/** /**
* Instantiates a new moving configuration. * Instantiates a new moving configuration.
@ -220,6 +222,9 @@ public class MovingConfig extends ACheckConfig {
loadChunksOnJoin = config.getBoolean(ConfPaths.MOVING_LOADCHUNKS_JOIN); loadChunksOnJoin = config.getBoolean(ConfPaths.MOVING_LOADCHUNKS_JOIN);
sprintingGrace = Math.max(0L, (long) (config.getDouble(ConfPaths.MOVING_SPRINTINGGRACE) * 1000.0)); // Config: seconds. sprintingGrace = Math.max(0L, (long) (config.getDouble(ConfPaths.MOVING_SPRINTINGGRACE) * 1000.0)); // Config: seconds.
speedGrace = Math.max(0, (int) Math.round(config.getDouble(ConfPaths.MOVING_SPEEDGRACE) * 20.0)); // Config: seconds speedGrace = Math.max(0, (int) Math.round(config.getDouble(ConfPaths.MOVING_SPEEDGRACE) * 20.0)); // Config: seconds
vehicleEnforceLocation = config.getBoolean(ConfPaths.MOVING_VEHICLES_ENFORCELOCATION);
vehiclePreventDestroyOwn = config.getBoolean(ConfPaths.MOVING_VEHICLES_PREVENTDESTROYOWN);
} }

View File

@ -694,7 +694,11 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
data.vehicleConsistency = MoveConsistency.getConsistency(from, to, vLoc); data.vehicleConsistency = MoveConsistency.getConsistency(from, to, vLoc);
// TODO: Consider TeleportUtil.forceMount or similar. // TODO: Consider TeleportUtil.forceMount or similar.
if (data.vehicleConsistency == MoveConsistency.INCONSISTENT) { if (data.vehicleConsistency == MoveConsistency.INCONSISTENT) {
if (MovingConfig.getConfig(player).vehicleEnforceLocation) {
return vLoc; return vLoc;
} else {
return null;
}
} else { } else {
data.resetPositions(vLoc); data.resetPositions(vLoc);
return null; return null;
@ -1325,20 +1329,16 @@ public class MovingListener extends CheckListener implements TickListener, IRemo
public void onVehicleDestroyLowest(final VehicleDestroyEvent event) { public void onVehicleDestroyLowest(final VehicleDestroyEvent event) {
// Prevent destroying ones own vehicle. // Prevent destroying ones own vehicle.
final Entity attacker = event.getAttacker(); final Entity attacker = event.getAttacker();
if (!(attacker instanceof Player)) { if (attacker instanceof Player && attacker.equals(event.getVehicle().getPassenger())) {
return;
}
final Vehicle vehicle = event.getVehicle();
if (!attacker.equals(vehicle.getPassenger())) {
return;
}
final Player player = (Player) attacker; final Player player = (Player) attacker;
if (!creativeFly.isEnabled(player) && !survivalFly.isEnabled(player)) { if (survivalFly.isEnabled(player) || creativeFly.isEnabled(player)) {
return; if (MovingConfig.getConfig(player).vehiclePreventDestroyOwn) {
}
event.setCancelled(true); event.setCancelled(true);
player.sendMessage(ChatColor.DARK_RED + "Destroying your own vehicle is disabled."); player.sendMessage(ChatColor.DARK_RED + "Destroying your own vehicle is disabled.");
} }
}
}
}
@EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true) @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
public void onVehicleDestroy(final VehicleDestroyEvent event) { public void onVehicleDestroy(final VehicleDestroyEvent event) {

View File

@ -641,6 +641,10 @@ public abstract class ConfPaths {
public static final String MOVING_SPRINTINGGRACE = MOVING + "sprintinggrace"; public static final String MOVING_SPRINTINGGRACE = MOVING + "sprintinggrace";
public static final String MOVING_SPEEDGRACE = MOVING + "speedgrace"; public static final String MOVING_SPEEDGRACE = MOVING + "speedgrace";
private static final String MOVING_VEHICLES = MOVING + "vehicles.";
public static final String MOVING_VEHICLES_ENFORCELOCATION = MOVING_VEHICLES + "enforcelocation";
public static final String MOVING_VEHICLES_PREVENTDESTROYOWN = MOVING_VEHICLES + "preventdestroyown";
/* /*
* dP"8 d8 ,e, * dP"8 d8 ,e,
* C8b Y d88 888,8, " 888 8e e88 888 dP"Y * C8b Y d88 888,8, " 888 8e e88 888 dP"Y

View File

@ -469,7 +469,11 @@ public class DefaultConfig extends ConfigFile {
set(ConfPaths.MOVING_SURVIVALFLY_HOVER_FALLDAMAGE, true); set(ConfPaths.MOVING_SURVIVALFLY_HOVER_FALLDAMAGE, true);
set(ConfPaths.MOVING_SURVIVALFLY_HOVER_SFVIOLATION, 500); set(ConfPaths.MOVING_SURVIVALFLY_HOVER_SFVIOLATION, 500);
// Special. // Vehicles.
set(ConfPaths.MOVING_VEHICLES_PREVENTDESTROYOWN, true);
set(ConfPaths.MOVING_VEHICLES_ENFORCELOCATION, true);
// Velocity.
set(ConfPaths.MOVING_VELOCITY_GRACETICKS, 20); set(ConfPaths.MOVING_VELOCITY_GRACETICKS, 20);
set(ConfPaths.MOVING_VELOCITY_ACTIVATIONCOUNTER, 80); set(ConfPaths.MOVING_VELOCITY_ACTIVATIONCOUNTER, 80);
set(ConfPaths.MOVING_VELOCITY_ACTIVATIONTICKS, 140); set(ConfPaths.MOVING_VELOCITY_ACTIVATIONTICKS, 140);