diff --git a/src/main/java/net/knarcraft/stargate/config/ConfigOption.java b/src/main/java/net/knarcraft/stargate/config/ConfigOption.java index 19418e9..d460492 100644 --- a/src/main/java/net/knarcraft/stargate/config/ConfigOption.java +++ b/src/main/java/net/knarcraft/stargate/config/ConfigOption.java @@ -112,6 +112,13 @@ public enum ConfigOption { "Whether to enable a fix that causes loss of NBT data, but allows vehicle teleportation to work " + "when CraftBook's remove minecart/boat on eject setting is enabled", false), + /** + * The delay between teleporting a vehicle and adding the player as passenger + */ + WAIT_FOR_PLAYER_AFTER_TELEPORT_DELAY("advanced.waitForPlayerAfterTeleportDelay", + "The amount of ticks to wait before adding a player as passenger of a vehicle. On slow servers, " + + "a value of 6 is required to avoid client glitches after teleporting on a vehicle.", 1), + /** * Whether to enable economy support for taking payment from players creating/destroying/using stargates */ diff --git a/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java b/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java index 89c9c6a..47542bd 100644 --- a/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java +++ b/src/main/java/net/knarcraft/stargate/config/StargateGateConfig.java @@ -136,6 +136,15 @@ public final class StargateGateConfig { return (boolean) configOptions.get(ConfigOption.ENABLE_CRAFT_BOOK_REMOVE_ON_EJECT_FIX); } + /** + * Gets the delay to use before adding a player as passenger of a teleported vehicle + * + * @return

The delay to use before adding a player as passenger of a teleported vehicle

+ */ + public int waitForPlayerAfterTeleportDelay() { + return (int) configOptions.get(ConfigOption.WAIT_FOR_PLAYER_AFTER_TELEPORT_DELAY); + } + /** * Gets whether the list of destinations within a network should be sorted * diff --git a/src/main/java/net/knarcraft/stargate/utility/TeleportHelper.java b/src/main/java/net/knarcraft/stargate/utility/TeleportHelper.java index e8ef4eb..381a76b 100644 --- a/src/main/java/net/knarcraft/stargate/utility/TeleportHelper.java +++ b/src/main/java/net/knarcraft/stargate/utility/TeleportHelper.java @@ -115,7 +115,7 @@ public final class TeleportHelper { teleportLeashedCreatures(player, origin, target); } TeleportHelper.teleportAndAddPassenger(entity, passenger, exitRotation); - }, passenger instanceof Player ? 6 : 0); + }, passenger instanceof Player ? Stargate.getGateConfig().waitForPlayerAfterTeleportDelay() : 0); } } @@ -144,7 +144,8 @@ public final class TeleportHelper { creature.setLeashHolder(null); scheduler.scheduleSyncDelayedTask(Stargate.getInstance(), () -> { new EntityTeleporter(target, creature).teleportEntity(origin); - scheduler.scheduleSyncDelayedTask(Stargate.getInstance(), () -> creature.setLeashHolder(player), 6); + scheduler.scheduleSyncDelayedTask(Stargate.getInstance(), () -> creature.setLeashHolder(player), + Stargate.getGateConfig().waitForPlayerAfterTeleportDelay()); }, 2); } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index a612b36..a4252e4 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -85,4 +85,7 @@ debugging: # debug - Debug -- Only enable if you have issues, massive console output debug: false # permissionDebug - This will output any and all Permissions checks to console, used for permissions debugging (Requires debug: true) - permissionDebug: false \ No newline at end of file + permissionDebug: false +advanced: + # waitForPlayerAfterTeleportDelay - The amount of ticks to wait before adding a player as passenger of a vehicle. On slow servers, a value of 6 is required to avoid client glitches after teleporting on a vehicle. + waitForPlayerAfterTeleportDelay: 6 \ No newline at end of file