Skip to content

Commit 52e2b7d

Browse files
Add MessageIconUrl and rich text support
1 parent f2a542a commit 52e2b7d

File tree

8 files changed

+248
-158
lines changed

8 files changed

+248
-158
lines changed

README.md

Lines changed: 30 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ The only permission this plugin has is `tpa` for all teleportation actions (send
2525
<?xml version="1.0" encoding="utf-8"?>
2626
<TeleportationConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
2727
<MessageColor>gray</MessageColor>
28+
<MessageIconUrl>https://i.imgur.com/wr879ca.png</MessageIconUrl>
2829
<TPACooldown>90</TPACooldown>
2930
<TPADelay>3</TPADelay>
3031
<TPADuration>90</TPADuration>
31-
<AllowCave>false</AllowCave>
3232
<AllowRaid>false</AllowRaid>
3333
<RaidDuration>30</RaidDuration>
3434
<AllowCombat>false</AllowCombat>
@@ -42,32 +42,34 @@ The only permission this plugin has is `tpa` for all teleportation actions (send
4242
```xml
4343
<?xml version="1.0" encoding="utf-8"?>
4444
<Translations xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
45-
<Translation Id="TargetNotFound" Value="Failed to find a target" />
46-
<Translation Id="CombatStart" Value="Combat mode started" />
47-
<Translation Id="CombatExpire" Value="Combat mode expired" />
48-
<Translation Id="RaidStart" Value="Raid mode started" />
49-
<Translation Id="RaidExpire" Value="Raid mode expired" />
50-
<Translation Id="TPAHelp" Value="Use: /tpa &lt;player/accept/deny/cancel&gt;" />
51-
<Translation Id="TPACooldown" Value="You have to wait {0} before you can send request again" />
52-
<Translation Id="TPADuplicate" Value="You already sent a teleportation request to that player" />
53-
<Translation Id="TPASent" Value="Successfully sent TPA request to {0}" />
54-
<Translation Id="TPAReceive" Value="You received TPA request from {0}" />
55-
<Translation Id="TPANoRequest" Value="There is no TPA requests to you" />
56-
<Translation Id="TPAAccepted" Value="Successfully accepted TPA request from {0}" />
57-
<Translation Id="TPADelay" Value="You will be teleported to {0} in {1} seconds" />
58-
<Translation Id="TPAWhileCombat" Value="Teleportation canceled because {0} is in combat mode" />
59-
<Translation Id="TPAWhileCombatYou" Value="Teleportation canceled because you are in combat mode" />
60-
<Translation Id="TPAWhileRaid" Value="Teleportation canceled because {0} is in raid mode" />
61-
<Translation Id="TPAWhileRaidYou" Value="Teleportation canceled because you are in raid mode" />
62-
<Translation Id="TPADead" Value="Teleportation canceled because you or {0} is dead" />
63-
<Translation Id="TPACave" Value="Teleportation canceled because {0} is in cave" />
64-
<Translation Id="TPACaveYou" Value="Teleportation canceled because you are in cave" />
65-
<Translation Id="TPANoSentRequest" Value="You did not send any TPA request" />
66-
<Translation Id="TPACanceled" Value="Successfully canceled TPA request to {0}" />
67-
<Translation Id="TPADenied" Value="Successfully denied TPA request from {0}" />
68-
<Translation Id="TPASuccess" Value="You have been teleported to {0}" />
69-
<Translation Id="TPAYourself" Value="You cannot send TPA request to yourself" />
70-
<Translation Id="TPAVehicle" Value="Teleportation canceled because {0} is in vehicle" />
71-
<Translation Id="TPAVehicleYou" Value="Teleportation canceled because you are in vehicle" />
45+
<Translation Id="TargetNotFound" Value="Target not found" />
46+
<Translation Id="CombatStart" Value="Combat mode activated" />
47+
<Translation Id="CombatExpire" Value="Combat mode ended" />
48+
<Translation Id="RaidStart" Value="Raid mode activated" />
49+
<Translation Id="RaidExpire" Value="Raid mode ended" />
50+
<Translation Id="TPAHelp" Value="[[b]]TPA Commands:[[/b]]&#xA;/tpa [[player]] - Send request&#xA;/tpa accept - Accept request&#xA;/tpa deny - Deny request&#xA;/tpa cancel - Cancel your request" />
51+
<Translation Id="TPACooldown" Value="Please wait [[b]]{0}[[/b]] seconds before sending another request" />
52+
<Translation Id="TPADuplicate" Value="You already have a pending request to this player" />
53+
<Translation Id="TPASent" Value="TPA request sent to [[b]]{0}[[/b]]" />
54+
<Translation Id="TPAReceive" Value="[[b]]{0}[[/b]] wants to teleport to you&#xA;Type [[b]]/tpa accept[[/b]] to allow" />
55+
<Translation Id="TPANoRequest" Value="No pending TPA requests" />
56+
<Translation Id="TPAAccepted" Value="Accepted [[b]]{0}'s[[/b]] TPA request" />
57+
<Translation Id="TPADelay" Value="Teleporting to [[b]]{0}[[/b]] in [[b]]{1}[[/b]] seconds..." />
58+
<Translation Id="TPAWhileCombat" Value="Teleport failed - [[b]]{0}[[/b]] is in combat" />
59+
<Translation Id="TPAWhileCombatYou" Value="Teleport failed - You are in combat" />
60+
<Translation Id="TPAWhileRaid" Value="Teleport failed - [[b]]{0}[[/b]] is in raid mode" />
61+
<Translation Id="TPAWhileRaidYou" Value="Teleport failed - You are in raid mode" />
62+
<Translation Id="TPADead" Value="Teleport failed - Player death detected" />
63+
<Translation Id="TPACave" Value="Teleport failed - [[b]]{0}[[/b]] is in a cave" />
64+
<Translation Id="TPACaveYou" Value="Teleport failed - You are in a cave" />
65+
<Translation Id="TPAVehicle" Value="Teleport failed - [[b]]{0}[[/b]] is in a vehicle" />
66+
<Translation Id="TPAVehicleYou" Value="Teleport failed - You are in a vehicle" />
67+
<Translation Id="TPANoSentRequest" Value="You have no pending outgoing requests" />
68+
<Translation Id="TPACanceled" Value="TPA request to [[b]]{0}[[/b]] canceled" />
69+
<Translation Id="TPADenied" Value="Denied TPA request from [[b]]{0}[[/b]]" />
70+
<Translation Id="TPACanceledSenderMoved" Value="Teleport canceled - [[b]]{0}[[/b]] moved" />
71+
<Translation Id="TPACanceledYouMoved" Value="Teleport canceled - You moved" />
72+
<Translation Id="TPASuccess" Value="Successfully teleported to [[b]]{0}[[/b]]" />
73+
<Translation Id="TPAYourself" Value="You cannot send a TPA request to yourself" />
7274
</Translations>
7375
```
Lines changed: 30 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,62 @@
11
using RestoreMonarchy.Teleportation.Utils;
22
using Rocket.API;
3-
using Rocket.Unturned.Chat;
43
using Rocket.Unturned.Player;
54
using System.Collections.Generic;
65

76
namespace RestoreMonarchy.Teleportation.Commands
87
{
98
public class TPACommand : IRocketCommand
109
{
11-
public AllowedCaller AllowedCaller => AllowedCaller.Player;
12-
13-
public string Name => "tpa";
14-
15-
public string Help => "Teleportation request command";
16-
17-
public string Syntax => "(player/accept/deny/cancel)";
18-
19-
public List<string> Aliases => new List<string>();
20-
21-
public List<string> Permissions => new List<string>();
10+
private TeleportationPlugin pluginInstance => TeleportationPlugin.Instance;
2211

2312
public void Execute(IRocketPlayer caller, string[] command)
2413
{
2514
if (command.Length < 1)
2615
{
27-
UnturnedChat.Say(caller, TeleportationPlugin.Instance.Translate("TPAHelp"), TeleportationPlugin.Instance.MessageColor);
16+
pluginInstance.SendMessageToPlayer(caller, "TPAHelp");
2817
return;
2918
}
3019

20+
UnturnedPlayer player = (UnturnedPlayer)caller;
21+
3122
string cmd = command[0].ToLower();
3223

3324
if (cmd == "accept" || cmd == "a")
3425
{
35-
TeleportationPlugin.Instance.AcceptTPARequest((UnturnedPlayer)caller);
36-
} else if (cmd == "cancel" || cmd == "c")
26+
pluginInstance.AcceptTPARequest(player);
27+
}
28+
else if (cmd == "cancel" || cmd == "c")
3729
{
38-
TeleportationPlugin.Instance.CancelTPARequest((UnturnedPlayer)caller);
39-
} else if (cmd == "deny" || cmd == "d")
30+
pluginInstance.CancelTPARequest(player);
31+
}
32+
else if (cmd == "deny" || cmd == "d")
4033
{
41-
TeleportationPlugin.Instance.DenyTPARequest((UnturnedPlayer)caller);
42-
} else
34+
pluginInstance.DenyTPARequest(player);
35+
}
36+
else
4337
{
44-
var target = UnturnedPlayer.FromName(cmd);
38+
UnturnedPlayer target = UnturnedPlayer.FromName(cmd);
4539
if (target != null)
4640
{
47-
TeleportationPlugin.Instance.SendTPARequest((UnturnedPlayer)caller, target);
48-
} else
41+
pluginInstance.SendTPARequest(player, target);
42+
}
43+
else
4944
{
50-
UnturnedChat.Say(caller, TeleportationPlugin.Instance.Translate("TargetNotFound"), TeleportationPlugin.Instance.MessageColor);
45+
pluginInstance.SendMessageToPlayer(caller, "TargetNotFound");
5146
}
5247
}
5348
}
49+
50+
public AllowedCaller AllowedCaller => AllowedCaller.Player;
51+
52+
public string Name => "tpa";
53+
54+
public string Help => "Teleportation request command";
55+
56+
public string Syntax => "(player/accept/deny/cancel)";
57+
58+
public List<string> Aliases => new List<string>();
59+
60+
public List<string> Permissions => new List<string>();
5461
}
5562
}

Teleportation/Models/TPARequest.cs

Lines changed: 50 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
using RestoreMonarchy.Teleportation.Utils;
22
using Rocket.Core.Utils;
3-
using Rocket.Unturned.Chat;
43
using Rocket.Unturned.Player;
54
using Steamworks;
65
using System;
@@ -9,19 +8,22 @@ namespace RestoreMonarchy.Teleportation.Models
98
{
109
public class TPARequest
1110
{
12-
private TeleportationPlugin plugin => TeleportationPlugin.Instance;
11+
private TeleportationPlugin pluginInstance => TeleportationPlugin.Instance;
1312

1413
public TPARequest(CSteamID sender, CSteamID target)
1514
{
1615
Sender = sender;
1716
Target = target;
1817

19-
double duration = plugin.Configuration.Instance.TPADuration;
18+
double duration = pluginInstance.Configuration.Instance.TPADuration;
2019
if (duration == 0)
2120
{
2221
duration = 30;
2322
}
2423
ExpireDate = DateTime.Now.AddSeconds(duration);
24+
25+
SenderPlayer = UnturnedPlayer.FromCSteamID(sender);
26+
TargetPlayer = UnturnedPlayer.FromCSteamID(target);
2527
}
2628

2729
public TPARequest() { }
@@ -31,22 +33,22 @@ public TPARequest() { }
3133
public DateTime ExpireDate { get; set; }
3234
public bool IsCanceled { get; private set; }
3335

34-
public UnturnedPlayer SenderPlayer => UnturnedPlayer.FromCSteamID(Sender);
35-
public UnturnedPlayer TargetPlayer => UnturnedPlayer.FromCSteamID(Target);
36+
public UnturnedPlayer SenderPlayer { get; set; }
37+
public UnturnedPlayer TargetPlayer { get; set; }
3638

3739
public bool IsExpired => ExpireDate < DateTime.Now;
3840

3941
public void Execute(double delay)
40-
{
42+
{
4143
if (delay > 0)
4244
{
43-
UnturnedChat.Say(Sender, plugin.Translate("TPADelay", TargetPlayer.DisplayName, delay), plugin.MessageColor);
44-
if (plugin.Configuration.Instance.CancelOnMove)
45+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPADelay", TargetPlayer.DisplayName, delay);
46+
if (pluginInstance.Configuration.Instance.CancelOnMove)
4547
{
46-
plugin.MovementDetector.AddPlayer(SenderPlayer.Player, () =>
48+
pluginInstance.MovementDetector.AddPlayer(SenderPlayer.Player, () =>
4749
{
48-
UnturnedChat.Say(Sender, plugin.Translate("TPACanceledYouMoved"), plugin.MessageColor);
49-
UnturnedChat.Say(Target, plugin.Translate("TPACanceledSenderMoved", SenderPlayer.DisplayName), plugin.MessageColor);
50+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPACanceledYouMoved");
51+
pluginInstance.SendMessageToPlayer(TargetPlayer, "TPACanceledSenderMoved", SenderPlayer.DisplayName);
5052
Cancel();
5153
});
5254
}
@@ -55,66 +57,83 @@ public void Execute(double delay)
5557
TaskDispatcher.QueueOnMainThread(() =>
5658
{
5759
if (IsCanceled)
60+
{
5861
return;
62+
}
5963

60-
plugin.MovementDetector.RemovePlayer(SenderPlayer.Player);
64+
pluginInstance.MovementDetector.RemovePlayer(SenderPlayer.Player);
6165

6266
if (!Validate(true))
6367
{
64-
plugin.Cooldowns.Remove(Sender);
68+
pluginInstance.Cooldowns.Remove(Sender);
6569
return;
6670
}
6771

68-
if (plugin.Configuration.Instance.UseUnsafeTeleport)
72+
if (pluginInstance.Configuration.Instance.UseUnsafeTeleport)
6973
{
7074
SenderPlayer.Player.teleportToLocationUnsafe(TargetPlayer.Position, TargetPlayer.Rotation);
7175
} else
7276
{
7377
SenderPlayer.Teleport(TargetPlayer);
74-
}
75-
76-
UnturnedChat.Say(Sender, plugin.Translate("TPASuccess", TargetPlayer.DisplayName), plugin.MessageColor);
78+
}
79+
80+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPASuccess", TargetPlayer.DisplayName);
7781

7882
}, (float)delay);
7983
}
8084

8185
public bool Validate(bool isFinal = false)
8286
{
83-
var plugin = TeleportationPlugin.Instance;
87+
var pluginInstance = TeleportationPlugin.Instance;
8488

85-
if (plugin.IsPlayerInCombat(SenderPlayer.CSteamID))
89+
if (pluginInstance.IsPlayerInCombat(SenderPlayer.CSteamID))
8690
{
87-
UnturnedChat.Say(SenderPlayer, plugin.Translate("TPAWhileCombatYou"), plugin.MessageColor);
91+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPAWhileCombatYou");
8892
if (isFinal)
89-
UnturnedChat.Say(TargetPlayer, plugin.Translate("TPAWhileCombat", SenderPlayer.DisplayName), plugin.MessageColor);
93+
{
94+
pluginInstance.SendMessageToPlayer(TargetPlayer, "TPAWhileCombat", SenderPlayer.DisplayName);
95+
}
96+
9097
return false;
9198
}
92-
else if (plugin.IsPlayerInRaid(SenderPlayer.CSteamID))
99+
else if (pluginInstance.IsPlayerInRaid(SenderPlayer.CSteamID))
93100
{
94-
UnturnedChat.Say(SenderPlayer, plugin.Translate("TPAWhileRaidYou"), plugin.MessageColor);
101+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPAWhileRaidYou");
95102
if (isFinal)
96-
UnturnedChat.Say(TargetPlayer, plugin.Translate("TPAWhileRaid", SenderPlayer.DisplayName), plugin.MessageColor);
103+
{
104+
pluginInstance.SendMessageToPlayer(TargetPlayer, "TPAWhileRaid", SenderPlayer.DisplayName);
105+
}
106+
97107
return false;
98108
}
99109
else if (SenderPlayer.Dead || (TargetPlayer.Dead && isFinal))
100110
{
101-
UnturnedChat.Say(SenderPlayer, plugin.Translate("TPADead", TargetPlayer.DisplayName), plugin.MessageColor);
111+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPADead", TargetPlayer.DisplayName);
102112
if (isFinal)
103-
UnturnedChat.Say(TargetPlayer, plugin.Translate("TPADead", SenderPlayer.DisplayName), plugin.MessageColor);
113+
{
114+
pluginInstance.SendMessageToPlayer(TargetPlayer, "TPADead", SenderPlayer.DisplayName);
115+
}
116+
104117
return false;
105118
}
106-
else if (plugin.IsPlayerInCave(TargetPlayer))
119+
else if (pluginInstance.IsPlayerInCave(TargetPlayer))
107120
{
108-
UnturnedChat.Say(SenderPlayer, plugin.Translate("TPACave", TargetPlayer.DisplayName), plugin.MessageColor);
121+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPACave", TargetPlayer.DisplayName);
109122
if (isFinal)
110-
UnturnedChat.Say(TargetPlayer, plugin.Translate("TPACaveYou", SenderPlayer.DisplayName), plugin.MessageColor);
123+
{
124+
pluginInstance.SendMessageToPlayer(TargetPlayer, "TPACaveYou", SenderPlayer.DisplayName);
125+
}
126+
111127
return false;
112128
}
113129
else if (SenderPlayer.IsInVehicle)
114130
{
115-
UnturnedChat.Say(SenderPlayer, plugin.Translate("TPAVehicleYou"), plugin.MessageColor);
131+
pluginInstance.SendMessageToPlayer(SenderPlayer, "TPAVehicleYou");
116132
if (isFinal)
117-
UnturnedChat.Say(TargetPlayer, plugin.Translate("TPAVehicle", SenderPlayer.DisplayName), plugin.MessageColor);
133+
{
134+
pluginInstance.SendMessageToPlayer(TargetPlayer, "TPAVehicle", SenderPlayer.DisplayName);
135+
}
136+
118137
return false;
119138
}
120139

Teleportation/Teleportation.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<TargetFramework>net48</TargetFramework>
55
<LangVersion>latest</LangVersion>
66
<RootNamespace>RestoreMonarchy.Teleportation</RootNamespace>
7-
<Version>1.8.1</Version>
7+
<Version>1.8.2</Version>
88
</PropertyGroup>
99

1010
<ItemGroup>

Teleportation/TeleportationConfiguration.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace RestoreMonarchy.Teleportation
55
public class TeleportationConfiguration : IRocketPluginConfiguration
66
{
77
public string MessageColor { get; set; }
8+
public string MessageIconUrl { get; set; } = "https://i.imgur.com/wr879ca.png";
89
public double TPACooldown { get; set; }
910
public double TPADelay { get; set; }
1011
public double TPADuration { get; set; }
@@ -21,6 +22,7 @@ public class TeleportationConfiguration : IRocketPluginConfiguration
2122
public void LoadDefaults()
2223
{
2324
MessageColor = "gray";
25+
MessageIconUrl = "https://i.imgur.com/wr879ca.png";
2426
TPACooldown = 90;
2527
TPADelay = 3;
2628
TPADuration = 90;

0 commit comments

Comments
 (0)