diff options
author | EvilSeph <evilseph@gmail.com> | 2012-01-29 06:36:43 -0500 |
---|---|---|
committer | EvilSeph <evilseph@gmail.com> | 2012-01-29 12:33:05 -0500 |
commit | f1a35effb05e06c0ae5556f76234a41e3ae3704e (patch) | |
tree | 25065c39fcbd42e3c036062db674d2e4df091273 /src | |
parent | c5a4bfd291af3a381a8c3f2a4a81766522039236 (diff) | |
download | craftbukkit-f1a35effb05e06c0ae5556f76234a41e3ae3704e.tar craftbukkit-f1a35effb05e06c0ae5556f76234a41e3ae3704e.tar.gz craftbukkit-f1a35effb05e06c0ae5556f76234a41e3ae3704e.tar.lz craftbukkit-f1a35effb05e06c0ae5556f76234a41e3ae3704e.tar.xz craftbukkit-f1a35effb05e06c0ae5556f76234a41e3ae3704e.zip |
Added useExactLoginLocation(). Closes BUKKIT-145
useExactLoginLocation() looks for settings.use-exact-login-location within bukkit.yml.
If true, we will bypass Vanilla's behaviour of checking for collisions and moving the player if needed when they login.
If false, we will continue to follow Vanilla's behaviour and move players that 'collide' with objects when they login.
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/net/minecraft/server/ServerConfigurationManager.java | 10 | ||||
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/CraftServer.java | 4 | ||||
-rw-r--r-- | src/main/resources/configurations/bukkit.yml | 1 |
3 files changed, 12 insertions, 3 deletions
diff --git a/src/main/java/net/minecraft/server/ServerConfigurationManager.java b/src/main/java/net/minecraft/server/ServerConfigurationManager.java index f6595e3e..62d37089 100644 --- a/src/main/java/net/minecraft/server/ServerConfigurationManager.java +++ b/src/main/java/net/minecraft/server/ServerConfigurationManager.java @@ -120,11 +120,15 @@ public class ServerConfigurationManager { worldserver.chunkProviderServer.getChunkAt((int) entityplayer.locX >> 4, (int) entityplayer.locZ >> 4); - while (worldserver.a(entityplayer, entityplayer.boundingBox).size() != 0) { - entityplayer.setPosition(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ); + // CraftBukkit start + if (!cserver.useExactLoginLocation()) { + while (worldserver.a(entityplayer, entityplayer.boundingBox).size() != 0) { + entityplayer.setPosition(entityplayer.locX, entityplayer.locY + 1.0D, entityplayer.locZ); + } + } else { + entityplayer.setPosition(entityplayer.locX, entityplayer.locY + entityplayer.getBukkitEntity().getEyeHeight(), entityplayer.locZ); } - // CraftBukkit start PlayerJoinEvent playerJoinEvent = new PlayerJoinEvent(this.cserver.getPlayer(entityplayer), "\u00A7e" + entityplayer.name + " joined the game."); this.cserver.getPluginManager().callEvent(playerJoinEvent); diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java index 5f8216f5..a7e98d74 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -771,6 +771,10 @@ public final class CraftServer implements Server { return this.console.allowFlight; } + public boolean useExactLoginLocation() { + return configuration.getBoolean("settings.use-exact-login-location"); + } + public ChunkGenerator getGenerator(String world) { ConfigurationSection section = configuration.getConfigurationSection("worlds"); ChunkGenerator result = null; diff --git a/src/main/resources/configurations/bukkit.yml b/src/main/resources/configurations/bukkit.yml index 392ca9c0..cf93fab4 100644 --- a/src/main/resources/configurations/bukkit.yml +++ b/src/main/resources/configurations/bukkit.yml @@ -20,6 +20,7 @@ settings: permissions-file: permissions.yml update-folder: update ping-packet-limit: 100 + use-exact-login-location: false aliases: icanhasbukkit: - version |