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

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>
  </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

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" />
</Translations>