Included with Purchase
Plugin Download
Instant access to the plugin file (.dll)
Future Updates
All updates and fixes at no extra cost
Developer Support
Help through our forum and Discord
Optional: Source Code
Add-on in cart for an additional fee
Readme

Teleportation2

Complete teleportation plugin with whitelists, blacklists, effects and more.

Features

  • Customizable teleportation rules
  • Cooldown and delay management:
  • Combat and raid modes
  • Whitelist and blacklist features
  • MySQL and JSON database support
  • Visual effects and sounds
  • VIP features

Credits

  • soer and BrokenGears for help in testing and ideas

Commands

  • /tpa <player> - Sends a teleportation request to another player
  • /tpa a - Accepts the teleportation request
  • /tpa c - Cancels the teleportation request
  • /tpa d - Denies the teleportation request
  • /tpa whitelist <player> - Adds player to the whitelist
  • /tpa whitelist remove <player> - Removes player from the whitelist
  • /tpa whitelist list - Lists all players on the whitelist
  • /tpa blacklist <player> - Adds player to the blacklist
  • /tpa blacklist remove <player> - Removes player from the blacklist
  • /tpa blacklist list - Lists all players on the blacklist

Permissions

<Permission Cooldown="0">tpa</Permission>
<!-- Only if EnableSeparatePermissions is enabled in the config (disabled by default) -->
<Permission Cooldown="0">tpa.send</Permission>
<Permission Cooldown="0">tpa.accept</Permission>

Configuration

<?xml version="1.0" encoding="utf-8"?>
<Teleportation2Configuration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <MessageColor>#BDBDBD</MessageColor>
  <MessageIconUrl>https://i.imgur.com/UOKFZ5k.png</MessageIconUrl>
  <Debug>false</Debug>
  <Database>
    <Provider>json</Provider>
    <MySQLConnectionString>SERVER=localhost;DATABASE=unturned;UID=root;PASSWORD=123456</MySQLConnectionString>
    <BlacklistTableName>TPABlacklists</BlacklistTableName>
    <WhitelistTableName>TPAWhitelists</WhitelistTableName>
  </Database>
  <GeneralRules>
    <UseUnsafeTeleport>false</UseUnsafeTeleport>
    <BlockFromUnderground>false</BlockFromUnderground>
    <BlockToUnderground>false</BlockToUnderground>
    <BlockFromVehicles>false</BlockFromVehicles>
    <BlockToVehicles>false</BlockToVehicles>
    <BlockFromDeadzone>false</BlockFromDeadzone>
    <BlockToDeadzone>false</BlockToDeadzone>
    <CancelOnSenderMove>true</CancelOnSenderMove>
    <CancelOnTargetMove>false</CancelOnTargetMove>
    <MaxMoveDistance>3</MaxMoveDistance>
    <RequestExpiryTime>30</RequestExpiryTime>
    <EnableSeparatePermissions>false</EnableSeparatePermissions>
  </GeneralRules>
  <Cooldown Enabled="true">
    <DefaultCooldown>60</DefaultCooldown>
    <ResetOnDeath>false</ResetOnDeath>
    <ResetWhenCanceled>true</ResetWhenCanceled>
    <EnabledForAdmins>false</EnabledForAdmins>
    <VIPCooldowns>
      <VIPCooldown Permission="teleportation2.vip" Cooldown="30" />
      <VIPCooldown Permission="teleportation2.mvp" Cooldown="20" />
    </VIPCooldowns>
  </Cooldown>
  <Delay Enabled="true">
    <DefaultDelay>10</DefaultDelay>
    <CountdownSenderInChat>true</CountdownSenderInChat>
    <CountdownTargetInChat>false</CountdownTargetInChat>
    <AdminHasZeroDelay>true</AdminHasZeroDelay>
    <VIPDelays>
      <VIPDelay Permission="teleportation2.vip" Delay="5" />
      <VIPDelay Permission="teleportation2.mvp" Delay="3" />
    </VIPDelays>
  </Delay>
  <CombatMode Enabled="true">
    <Duration>20</Duration>
    <NotifyWhenStarted>true</NotifyWhenStarted>
    <NotifyWhenExpired>true</NotifyWhenExpired>
    <ResetOnDeath>true</ResetOnDeath>
    <BlockTPAEscape>true</BlockTPAEscape>
    <BlockTPASupport>false</BlockTPASupport>
    <BypassAdmin>true</BypassAdmin>
    <BlockedCommands>
      <BlockedCommand>home</BlockedCommand>
      <BlockedCommand>vault</BlockedCommand>
    </BlockedCommands>
  </CombatMode>
  <RaidMode Enabled="true">
    <Duration>30</Duration>
    <NotifyWhenStarted>true</NotifyWhenStarted>
    <NotifyWhenExpired>true</NotifyWhenExpired>
    <ResetOnDeath>true</ResetOnDeath>
    <BlockTPAEscape>true</BlockTPAEscape>
    <BlockTPASupport>false</BlockTPASupport>
    <BypassAdmin>true</BypassAdmin>
    <BlockedCommands>
      <BlockedCommand>home</BlockedCommand>
      <BlockedCommand>vault</BlockedCommand>
    </BlockedCommands>
  </RaidMode>
  <Whitelist Enabled="true">
    <WhitelistGroupMembers>true</WhitelistGroupMembers>
    <WhitelistAdmins>false</WhitelistAdmins>
  </Whitelist>
  <Blacklist Enabled="true" />
  <Effects>
    <TeleportFromEffectId>147</TeleportFromEffectId>
    <TeleportToEffectId>147</TeleportToEffectId>
    <ReceivedTPAEffectId>61</ReceivedTPAEffectId>
    <AcceptedTPAEffectId>61</AcceptedTPAEffectId>
    <CanceledTPAEffectId>61</CanceledTPAEffectId>
    <DeniedTPAEffectId>61</DeniedTPAEffectId>
  </Effects>
</Teleportation2Configuration>

Configuration Options

Debug - This option helps me debug the problems with the plugin. Should be disabled.

Database

Provider - mysql or json

General Rules

UseUnsafeTeleport - Set whether to use Unturned unsafe teleport method which doesn't prevent glitches. Keep it disabled.
BlockFromUnderground and BlockFromUnderground - Set whether player should be able to teleport from or to below level of the ground
CancelOnTargetMove - When enabled the ongoing teleportation will be canceled if player moves beyond the MaxMoveDistance
RequestExpiryTime - The time for a pending TPA request to expire
EnableSeparatePermissions - Enable tpa.send and tpa.accept permissions

Cooldown

ResetWhenCanceled - When teleportation request is canceled the cooldown will reset

Delay

CountdownSenderInChat and CountdownTargetInChat - When enabled the delay will be countdown in chat every second

CombatMode & RaidMode

BlockTPAEscape - When enabled player won't be able to teleport to another player while they are in combat/raid mode
BlockTPASupport - When enabled player won't be able to teleport to another player in combat/raid mode

Effects

TeleportFromEffectId - The teleportation effect player to everyone on the server in position where player was teleported from
TeleportToEffectId - The teleportation effect player to everyone on the server in position where player is teleported to
ReceivedTPAEffectId - Notification effect played only to the target when they receiver TPA request from the sender
AcceptedTPAEffectId - Notification effect played only to the sender when their TPA request is accepted
CanceledTPAEffectId - Notification effect played only to the sender when their TPA request is canceled
DeniedTPAEffectId - Notification effect played only to the sender when their TPA request is denied

Translations

<?xml version="1.0" encoding="utf-8"?>
<Translations xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <Translation Id="CombatModeStarted" Value="Combat mode started" />
  <Translation Id="RaidModeStarted" Value="Raid mode started" />
  <Translation Id="CombatModeExpired" Value="Combat mode expired" />
  <Translation Id="RaidModeExpired" Value="Raid mode expired" />
  <Translation Id="TPARequestSent" Value="You sent a TPA request to {0}!" />
  <Translation Id="TPARequestReceived" Value="You received a TPA request from {0}!" />
  <Translation Id="TPARequestExpired" Value="Your TPA request to {0} expired!" />
  <Translation Id="TimeSecondsFormat" Value="{0} seconds" />
  <Translation Id="TimeSecondFormat" Value="{0} second" />
  <Translation Id="TPACooldown" Value="You have to wait {0} to send a TPA request again." />
  <Translation Id="TPABlockYourself" Value="You can't send a TPA request to yourself." />
  <Translation Id="TPABlockFromVehicle" Value="You can't send a request while you are in a vehicle!" />
  <Translation Id="TPABlockFromUnderground" Value="You can't send a request while you are in the underground!" />
  <Translation Id="TPABlockFromDeadzone" Value="You can't send a request while you are in the deadzone!" />
  <Translation Id="TPASendBlockCombatEscape" Value="You can't send a request while you are in the combat mode!" />
  <Translation Id="TPASendBlockCombatSupport" Value="You can't send a request to {0} because they are in the combat mode!" />
  <Translation Id="TPASendBlockRaidEscape" Value="You can't send a request while you are in the raid mode!" />
  <Translation Id="TPASendBlockRaidSupport" Value="You can't send a request to {0} because they are in the raid mode!" />
  <Translation Id="TPASendBlockTargetNoPermission" Value="You cant't send a request to {0} because they have no permission to accept it." />
  <Translation Id="TPAAcceptBlockCombatEscape" Value="You can't accept the request, becase {0} is in the combat mode!" />
  <Translation Id="TPAAcceptBlockCombatSupport" Value="You can't accept the request while you are in the combat mode!" />
  <Translation Id="TPAAcceptBlockRaidEscape" Value="You can't accept the request, because {0} is in the raid mode!" />
  <Translation Id="TPAAcceptBlockRaidSupport" Value="You can't accept the request while you are in the raid mode!" />
  <Translation Id="TPAAcceptBlockDead" Value="You can't accept a TPA request from {0} because they are dead!" />
  <Translation Id="TPABlockBlacklist" Value="You can't send a request to {0}, because they blacklisted you!" />
  <Translation Id="TPADelaySender" Value="You will be teleported to {0} in {1}!" />
  <Translation Id="TPADelayTarget" Value="{0} will teleport to you in {1}!" />
  <Translation Id="TPABlockTeleporting" Value="You can't send a TPA request while you are in process of teleporting!" />
  <Translation Id="TPABlockDead" Value="You can't send a TPA request to {0} because they are dead!" />
  <Translation Id="TPAAlreadySent" Value="You have already sent a TPA request to {0}" />
  <Translation Id="TPABlockFromVehicleSender" Value="Your TPA request to {0} was canceled, because you're in a vehicle!" />
  <Translation Id="TPABlockFromVehicleTarget" Value="{0} TPA request to you was canceled, because he's in a vehicle!" />
  <Translation Id="TPABlockToVehicleSender" Value="Your TPA request to {0} was canceled, because they are in a vehicle!" />
  <Translation Id="TPABlockToVehicleTarget" Value="{0} TPA request to you was canceled, because you're in a vehicle!" />
  <Translation Id="TPABlockFromUndergroundSender" Value="Your TPA request to {0} was canceled, because are are in an underground!" />
  <Translation Id="TPABlockFromUndergroundTarget" Value="{0} TPA request to you was canceled, because they in an underground!" />
  <Translation Id="TPABlockToUndergroundSender" Value="Your TPA request to {0} was canceled, because they are in an underground!" />
  <Translation Id="TPABlockToUndergroundTarget" Value="{0} TPA request to you was canceled, because you're in an underground!" />
  <Translation Id="TPABlockFromDeadzoneSender" Value="Your TPA request to {0} was canceled, because are are in a deadzone!" />
  <Translation Id="TPABlockFromDeadzoneTarget" Value="{0} TPA request to you was canceled, because they in a deadzone!" />
  <Translation Id="TPABlockToDeadzoneSender" Value="Your TPA request to {0} was canceled, because they are in a deadzone!" />
  <Translation Id="TPABlockToDeadzoneTarget" Value="{0} TPA request to you was canceled, because you're in a deadzone!" />
  <Translation Id="TPANoPendingRequests" Value="You don't have any pending TPA requests." />
  <Translation Id="TPARequestNotFound" Value="You don't have any pending TPA request from {0}." />
  <Translation Id="PlayerNotFound" Value="Player {0} could not be found" />
  <Translation Id="TPASuccessSender" Value="You were teleported to {0}!" />
  <Translation Id="TPASuccessTarget" Value="{0} was teleported to you!" />
  <Translation Id="TPAFailSender" Value="You could not be teleported to {0}!" />
  <Translation Id="TPAFailTarget" Value="{0} could not be teleported to you!" />
  <Translation Id="TPASenderMovedSender" Value="Your TPA to {0} was canceled, because you moved." />
  <Translation Id="TPASenderMovedTarget" Value="{0} TPA to you was canceled, because they moved." />
  <Translation Id="TPATargetMovedSender" Value="Your TPA to {0} was canceled, because they moved." />
  <Translation Id="TPATargetMovedTarget" Value="{0} TPA to you was canceled, because you moved." />
  <Translation Id="TPACombatEscapeCanceledSender" Value="Your TPA to {0} was canceled, because you started a combat." />
  <Translation Id="TPACombatEscapeCanceledTarget" Value="{0} TPA to you was canceled, because they started a combat." />
  <Translation Id="TPACombatSupportCanceledSender" Value="Your TPA to {0} was canceled, because they started a combat." />
  <Translation Id="TPACombatSupportCanceledTarget" Value="{0} TPA to you was canceled, because you started a combat." />
  <Translation Id="TPARaidEscapeCanceledSender" Value="Your TPA to {0} was canceled, because you started a raid." />
  <Translation Id="TPARaidEscapeCanceledTarget" Value="{0} TPA to you was canceled, because they started a raid." />
  <Translation Id="TPARaidSupportCanceledSender" Value="Your TPA to {0} was canceled, because they started a raid." />
  <Translation Id="TPASenderDeathCanceledSender" Value="Your TPA to {0} was canceled, because you died." />
  <Translation Id="TPASenderDeathCanceledTarget" Value="{0} TPA to you was canceled, because they died." />
  <Translation Id="TPATargetDeathCanceledSender" Value="Your TPA to {0} was canceled, because they died." />
  <Translation Id="TPATargetDeathCanceledTarget" Value="{0} TPA to you was canceled, because you died." />
  <Translation Id="TPATargetExitCanceledSender" Value="Your TPA to {0} was canceled, because they exited the server" />
  <Translation Id="TPASenderExitCanceledTarget" Value="{0} TPA to you was canceled, because they exited the server" />
  <Translation Id="TPAPendingRequests" Value="The following are pending TPA requests to you:" />
  <Translation Id="TPAPendingRequestsItem" Value="{0}. {1}" />
  <Translation Id="TPACancelNoRequests" Value="You haven't got any TPA requests." />
  <Translation Id="TPACancelRequestNotFound" Value="You haven't got any TPA request to {0}." />
  <Translation Id="TPARequestCanceledSender" Value="You canceled your TPA request to {0}!" />
  <Translation Id="TPARequestCanceledTarget" Value="{0} canceled their TPA request to you!" />
  <Translation Id="TPADenyNoRequests" Value="You haven't received any TPA requests." />
  <Translation Id="TPADenyRequestNotFound" Value="You haven't received any TPA request from {0}." />
  <Translation Id="TPARequestDeniedSender" Value="{0} denied your TPA request!" />
  <Translation Id="TPARequestDeniedTarget" Value="You denied {0} TPA request!" />
  <Translation Id="TPABlacklistAddInvalid" Value="You must provide a player name to add them to your blacklist!" />
  <Translation Id="TPABlacklistAddYourself" Value="You can't add yourself to the blacklist." />
  <Translation Id="TPABlacklistAddAlready" Value="{0} is already in your blacklist." />
  <Translation Id="TPABlacklistAddSuccess" Value="Successfully added {0} to your TPA blacklist!" />
  <Translation Id="TPABlacklistRemoveInvalid" Value="You must provide a player name to remove them from your blacklist!" />
  <Translation Id="TPABlacklistRemoveNotFound" Value="{0} was not found in your blacklist." />
  <Translation Id="TPABlacklistRemoveSuccess" Value="Successfully removed {0} from your TPA blacklist!" />
  <Translation Id="TPABlacklistListEmpty" Value="You don't have any player in your blacklist." />
  <Translation Id="TPABlacklistListHeader" Value="Your TPA blacklist ({0}):" />
  <Translation Id="TPABlacklistListItem" Value="{0}. {1}" />
  <Translation Id="TPABlacklistListNextPage" Value="Page [{0}/{1}]. Use /tpa blacklist list {2} to view the next page" />
  <Translation Id="TPABlacklistListPrevPage" Value="Page [{0}/{1}]. Use /tpa blacklist list {2} to view the previous page" />
  <Translation Id="TPABlacklistHelpHeader" Value="TPA Blacklist command help" />
  <Translation Id="TPABlacklistHelpItem1" Value="/tpa blacklist [[player]] - Add the player to your blacklist" />
  <Translation Id="TPABlacklistHelpItem2" Value="/tpa blacklist remove [[player]] - Remove the player from your blacklist" />
  <Translation Id="TPABlacklistHelpItem3" Value="/tpa blacklist list - View the list of players in your blacklist" />
  <Translation Id="TPAWhitelistAddInvalid" Value="You must provide a player name to add them to your whitelist!" />
  <Translation Id="TPAWhitelistAddYourself" Value="You can't add yourself to the whitelist." />
  <Translation Id="TPAWhitelistAddAlready" Value="{0} is already in your whitelist." />
  <Translation Id="TPAWhitelistAddSuccess" Value="Successfully added {0} to your TPA whitelist!" />
  <Translation Id="TPAWhitelistRemoveInvalid" Value="You must provide a player name to remove them from your whitelist!" />
  <Translation Id="TPAWhitelistRemoveNotFound" Value="{0} was not found in your whitelist." />
  <Translation Id="TPAWhitelistRemoveSuccess" Value="Successfully removed {0} from your TPA whitelist!" />
  <Translation Id="TPAWhitelistListEmpty" Value="You don't have any player in your whitelist." />
  <Translation Id="TPAWhitelistListHeader" Value="Your TPA whitelist ({0}):" />
  <Translation Id="TPAWhitelistListItem" Value="{0}. {1}" />
  <Translation Id="TPAWhitelistListNextPage" Value="Page [{0}/{1}]. Use /tpa whitelist list {2} to view the next page" />
  <Translation Id="TPAWhitelistListPrevPage" Value="Page [{0}/{1}]. Use /tpa whitelist list {2} to view the previous page" />
  <Translation Id="TPAWhitelistHelpHeader" Value="TPA Whitelist command help" />
  <Translation Id="TPAWhitelistHelpItem1" Value="/tpa whitelist [[player]] - Add the player to your whitelist" />
  <Translation Id="TPAWhitelistHelpItem2" Value="/tpa whitelist remove [[player]] - Remove the player from your whitelist" />
  <Translation Id="TPAWhitelistHelpItem3" Value="/tpa whitelist list - View the list of players in your whitelist" />
  <Translation Id="TPAHelpHeader" Value="TPA command help" />
  <Translation Id="TPAHelpItem1" Value="/tpa [[player]] - Send TPA request to the the player" />
  <Translation Id="TPAHelpItem2" Value="/tpa accept [player] - Accept the TPA request from the player" />
  <Translation Id="TPAHelpItem3" Value="/tpa cancel [player] - Cancel your TPA request to player" />
  <Translation Id="TPAHelpItem4" Value="/tpa deny [player] - Deny the TPA request you received from the player" />
  <Translation Id="NotConsoleCommand" Value="This command cannot be called from the console" />
  <Translation Id="TPAWhitelistDisabled" Value="The TPA whitelist is disabled on this server" />
  <Translation Id="TPABlacklistDisabled" Value="The TPA blacklist is disabled on this server" />
  <Translation Id="TPAVehicleNoSpaceCanceledSender" Value="Your TPA to {0} was canceled, because there is no space in vehicle" />
  <Translation Id="TPAVehicleNoSpaceCanceledTarget" Value="{0} TPA to you was canceled, because there is no space in vehicle" />
  <Translation Id="CombatModeCommandBlocked" Value="Command {0} is blocked during a combat mode" />
  <Translation Id="RaidModeCommandBlocked" Value="Command {0} is blocked during a raid mode" />
  <Translation Id="TPASendNoPermission" Value="You don't have permission to send TPA request." />
  <Translation Id="TPAAcceptNoPermission" Value="You don't have permission to accept TPA request." />
</Translations>