Fixed updater and some other older changes
This commit is contained in:
parent
a00ca2611e
commit
994af42e54
6 changed files with 67 additions and 147 deletions
|
@ -1,4 +1,4 @@
|
||||||
name: TheButtonMCChatPlugin
|
name: ButtonChat
|
||||||
main: buttondevteam.thebuttonmcchat.PluginMain
|
main: buttondevteam.thebuttonmcchat.PluginMain
|
||||||
version: 4.0
|
version: 4.0
|
||||||
commands:
|
commands:
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
package buttondevteam.thebuttonmcchat;
|
package buttondevteam.thebuttonmcchat;
|
||||||
|
|
||||||
import java.io.Serializable;
|
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
|
import org.bukkit.OfflinePlayer;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class ChatPlayer implements Serializable {
|
import buttondevteam.core.TBMCPlayer;
|
||||||
private static final long serialVersionUID = 208589136914849018L;
|
|
||||||
public String PlayerName;
|
public class ChatPlayer extends TBMCPlayer {
|
||||||
public String UserName;
|
public String UserName;
|
||||||
public List<String> UserNames;
|
public List<String> UserNames;
|
||||||
private short FlairTime;
|
private short FlairTime;
|
||||||
|
@ -34,12 +34,11 @@ public class ChatPlayer implements Serializable {
|
||||||
public static final short FlairTimeCantPress = -2;
|
public static final short FlairTimeCantPress = -2;
|
||||||
public static final short FlairTimeNone = -3;
|
public static final short FlairTimeNone = -3;
|
||||||
|
|
||||||
public UUID UUID;
|
|
||||||
|
|
||||||
public static HashMap<UUID, ChatPlayer> OnlinePlayers = new HashMap<>();
|
public static HashMap<UUID, ChatPlayer> OnlinePlayers = new HashMap<>();
|
||||||
|
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public static ChatPlayer GetFromName(String name) {
|
public static ChatPlayer GetFromName(String name) {
|
||||||
Player p = Bukkit.getPlayer(name); // TODO
|
OfflinePlayer p = Bukkit.getOfflinePlayer(name);
|
||||||
if (p != null)
|
if (p != null)
|
||||||
return OnlinePlayers.get(p.getUniqueId());
|
return OnlinePlayers.get(p.getUniqueId());
|
||||||
else
|
else
|
||||||
|
|
|
@ -189,9 +189,6 @@ public class ChatProcessing {
|
||||||
"%s{\"text\":\"[%s]%s\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"Copy message\",\"color\":\"blue\"}},\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"%s\"}},",
|
"%s{\"text\":\"[%s]%s\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"Copy message\",\"color\":\"blue\"}},\"clickEvent\":{\"action\":\"suggest_command\",\"value\":\"%s\"}},",
|
||||||
(mp != null && mp.ChatOnly
|
(mp != null && mp.ChatOnly
|
||||||
? "{\"text\":\"[C]\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Chat only\",\"color\":\"blue\"}]}}},"
|
? "{\"text\":\"[C]\",\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Chat only\",\"color\":\"blue\"}]}}},"
|
||||||
// (mp != null && mp.ChatOnly ?
|
|
||||||
// "{\"text:\":\"\"}," - I have been staring at
|
|
||||||
// this one line for hours... Hours...
|
|
||||||
: ""),
|
: ""),
|
||||||
currentchannel.DisplayName, (mp != null && !mp.RPMode ? "[OOC]" : ""), suggestmsg));
|
currentchannel.DisplayName, (mp != null && !mp.RPMode ? "[OOC]" : ""), suggestmsg));
|
||||||
json.append("{\"text\":\" <\"},");
|
json.append("{\"text\":\" <\"},");
|
||||||
|
|
|
@ -1,7 +1,5 @@
|
||||||
package buttondevteam.thebuttonmcchat;
|
package buttondevteam.thebuttonmcchat;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.IOException;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
@ -16,7 +14,6 @@ import org.bukkit.GameMode;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.configuration.InvalidConfigurationException;
|
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
|
@ -70,10 +67,30 @@ public class PlayerListener implements Listener {
|
||||||
public void onPlayerJoin(PlayerJoinEvent event) {
|
public void onPlayerJoin(PlayerJoinEvent event) {
|
||||||
if (essentials == null)
|
if (essentials == null)
|
||||||
essentials = ((Essentials) Bukkit.getPluginManager().getPlugin("Essentials"));
|
essentials = ((Essentials) Bukkit.getPluginManager().getPlugin("Essentials"));
|
||||||
final Player p = event.getPlayer();
|
}
|
||||||
ChatPlayer mp = ChatPlayer.GetFromPlayer(p);
|
|
||||||
if (!mp.FlairState.equals(FlairStates.NoComment)) {
|
@EventHandler
|
||||||
PluginMain.ConfirmUserMessage(mp);
|
public void onPlayerLoad(TBMCPlayerLoadEvent e) {
|
||||||
|
YamlConfiguration yc = e.GetPlayerConfig();
|
||||||
|
ChatPlayer cp = e.GetPlayer().AsPluginPlayer(ChatPlayer.class);
|
||||||
|
cp.UserName = yc.getString("username");
|
||||||
|
short tcp = (short) yc.getInt("flairtime");
|
||||||
|
cp.SetFlair(tcp);
|
||||||
|
String flairstate = yc.getString("flairstate");
|
||||||
|
if (flairstate != null)
|
||||||
|
cp.FlairState = FlairStates.valueOf(flairstate);
|
||||||
|
else
|
||||||
|
cp.FlairState = FlairStates.NoComment;
|
||||||
|
cp.UserNames = yc.getStringList("usernames");
|
||||||
|
cp.FCount = yc.getInt("fcount");
|
||||||
|
cp.FDeaths = yc.getInt("fdeaths");
|
||||||
|
cp.FlairCheater = yc.getBoolean("flaircheater");
|
||||||
|
ChatPlayer.OnlinePlayers.put(cp.UUID, cp);
|
||||||
|
|
||||||
|
Player p = Bukkit.getPlayer(cp.UUID);
|
||||||
|
|
||||||
|
if (!cp.FlairState.equals(FlairStates.NoComment)) {
|
||||||
|
PluginMain.ConfirmUserMessage(cp);
|
||||||
Timer timer = new Timer();
|
Timer timer = new Timer();
|
||||||
PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
|
PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -81,11 +98,11 @@ public class PlayerListener implements Listener {
|
||||||
p.setPlayerListName(p.getName() + mp.GetFormattedFlair());
|
p.setPlayerListName(p.getName() + mp.GetFormattedFlair());
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tt.mp = mp;
|
tt.mp = cp;
|
||||||
timer.schedule(tt, 1000);
|
timer.schedule(tt, 1000);
|
||||||
} else {
|
} else {
|
||||||
if (mp.GetFlairTime() == 0x00)
|
if (cp.GetFlairTime() == 0x00)
|
||||||
mp.SetFlair(ChatPlayer.FlairTimeNone);
|
cp.SetFlair(ChatPlayer.FlairTimeNone);
|
||||||
Timer timer = new Timer();
|
Timer timer = new Timer();
|
||||||
PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
|
PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
|
||||||
@Override
|
@Override
|
||||||
|
@ -94,17 +111,7 @@ public class PlayerListener implements Listener {
|
||||||
if (player == null)
|
if (player == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*
|
if (mp.FlairState.equals(FlairStates.NoComment)) {
|
||||||
* PlayerProfile pp = ((FastLoginBukkit) FastLoginBukkit
|
|
||||||
* .getPlugin(FastLoginBukkit.class)).getStorage()
|
|
||||||
* .getProfile(player.getName(), true); boolean ispremium =
|
|
||||||
* pp != null && pp.isPremium();
|
|
||||||
*/// Login stuff
|
|
||||||
|
|
||||||
if (/*
|
|
||||||
* ispremium &&
|
|
||||||
*/// Login stuff
|
|
||||||
mp.FlairState.equals(FlairStates.NoComment)) {
|
|
||||||
String json = String.format(
|
String json = String.format(
|
||||||
"[\"\",{\"text\":\"If you're from Reddit and you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]",
|
"[\"\",{\"text\":\"If you're from Reddit and you'd like your /r/TheButton flair displayed ingame, write your Minecraft name to \",\"color\":\"aqua\"},{\"text\":\"[this thread].\",\"color\":\"aqua\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]",
|
||||||
PluginMain.FlairThreadURL);
|
PluginMain.FlairThreadURL);
|
||||||
|
@ -116,113 +123,22 @@ public class PlayerListener implements Listener {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
tt.mp = mp;
|
tt.mp = cp;
|
||||||
;
|
|
||||||
timer.schedule(tt, 15 * 1000);
|
timer.schedule(tt, 15 * 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
nicknames.put(essentials.getUser(p).getNickname(), p.getUniqueId());
|
||||||
* final Timer timer = new Timer(); mp.LoginWarningCount = 0;
|
|
||||||
* PlayerJoinTimerTask tt = new PlayerJoinTimerTask() {
|
|
||||||
*
|
|
||||||
* @Override public void run() { final Player player =
|
|
||||||
* Bukkit.getPlayer(mp.PlayerName); if (player == null) return;
|
|
||||||
*
|
|
||||||
* PlayerProfile pp = ((FastLoginBukkit) FastLoginBukkit
|
|
||||||
* .getPlugin(FastLoginBukkit.class)).getStorage()
|
|
||||||
* .getProfile(player.getName(), true); boolean ispremium = pp != null
|
|
||||||
* && pp.isPremium(); final MaybeOfflinePlayer mplayer = mp;
|
|
||||||
*
|
|
||||||
* if (mp.LoginWarningCount < LoginWarningCountTotal) { if
|
|
||||||
* (AuthMe.getInstance().api.isAuthenticated(player)) { // The player
|
|
||||||
* logged in in any way if (!ispremium &&
|
|
||||||
* !mp.FlairState.equals(FlairStates.Accepted) &&
|
|
||||||
* !mp.FlairState.equals(FlairStates.Commented)) { // The player isn't
|
|
||||||
* premium, and doesn't have a // flair String json = String .format(
|
|
||||||
* "[\"\",{\"text\":\"Welcome! If you are a premium Minecraft user, please do /premium and relog, otherwise please verify your /r/thebutton flair to play, \",\"color\":\"gold\"},{\"text\":\"[here].\",\"color\":\"gold\",\"clickEvent\":{\"action\":\"open_url\",\"value\":\"%s\"},\"hoverEvent\":{\"action\":\"show_text\",\"value\":{\"text\":\"\",\"extra\":[{\"text\":\"Click here to go to the Reddit thread\",\"color\":\"aqua\"}]}}}]"
|
|
||||||
* , PluginMain.FlairThreadURL);
|
|
||||||
* PluginMain.Instance.getServer().dispatchCommand( PluginMain.Console,
|
|
||||||
* "tellraw " + mp.PlayerName + " " + json); } } } else { if
|
|
||||||
* (AuthMe.getInstance().api.isAuthenticated(player)) { if (!ispremium
|
|
||||||
* && !mplayer.FlairState .equals(FlairStates.Accepted) &&
|
|
||||||
* !mplayer.FlairState .equals(FlairStates.Commented)) {
|
|
||||||
* Bukkit.getScheduler().runTask(PluginMain.Instance, new Runnable() {
|
|
||||||
*
|
|
||||||
* @Override public void run() { player.kickPlayer(
|
|
||||||
* "Please either use /premium and relog or verify your flair by commenting in the thread and using /u accept."
|
|
||||||
* ); } }); timer.cancel(); } } } mp.LoginWarningCount++; } }; tt.mp =
|
|
||||||
* mp; int timeout = AuthMe.getInstance().getConfig()
|
|
||||||
* .getInt("settings.restrictions.timeout"); timer.schedule(tt, (timeout
|
|
||||||
* / LoginWarningCountTotal) * 1000, (timeout / LoginWarningCountTotal)
|
|
||||||
* * 1000);
|
|
||||||
*/// Login stuff
|
|
||||||
|
|
||||||
/* NICKNAME LOGIC */
|
cp.RPMode = true;
|
||||||
|
|
||||||
UUID id = p.getUniqueId();
|
cp.FlairUpdate(); // Update display
|
||||||
|
|
||||||
File f = new File("plugins/Essentials/userdata/" + id + ".yml");
|
if (cp.ChatOnly || p.getGameMode().equals(GameMode.SPECTATOR)) {
|
||||||
if (f.exists()) {
|
cp.ChatOnly = false;
|
||||||
YamlConfiguration yc = new YamlConfiguration();
|
|
||||||
try {
|
|
||||||
yc.load(f);
|
|
||||||
} catch (IOException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
} catch (InvalidConfigurationException e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
}
|
|
||||||
String nickname = yc.getString("nickname");
|
|
||||||
if (nickname != null) {
|
|
||||||
nicknames.put(nickname, id);
|
|
||||||
|
|
||||||
if (Enable) {
|
|
||||||
if (!p.getName().equals("NorbiPeti")) {
|
|
||||||
for (Player player : PluginMain.GetPlayers()) {
|
|
||||||
if (player.getName().equals("NorbiPeti")) {
|
|
||||||
player.chat("Hey, " + nickname + "!");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
mp.RPMode = true;
|
|
||||||
|
|
||||||
mp.FlairUpdate(); // Update display
|
|
||||||
|
|
||||||
if (mp.ChatOnly || p.getGameMode().equals(GameMode.SPECTATOR)) {
|
|
||||||
mp.ChatOnly = false;
|
|
||||||
p.setGameMode(GameMode.SURVIVAL);
|
p.setGameMode(GameMode.SURVIVAL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
|
||||||
public void onPlayerLoad(TBMCPlayerLoadEvent e) {
|
|
||||||
YamlConfiguration yc = e.GetPlayerConfig();
|
|
||||||
ChatPlayer cp = new ChatPlayer();
|
|
||||||
cp.UUID = UUID.fromString(yc.getString("uuid"));
|
|
||||||
cp.UserName = yc.getString("username");
|
|
||||||
String tcp = yc.getString("flairtime");
|
|
||||||
if (tcp.equals("--"))
|
|
||||||
cp.SetFlair(ChatPlayer.FlairTimeNonPresser);
|
|
||||||
else if (tcp.equals("??"))
|
|
||||||
cp.SetFlair(ChatPlayer.FlairTimeCantPress);
|
|
||||||
else if (tcp.length() > 0)
|
|
||||||
cp.SetFlair(Short.parseShort(tcp));
|
|
||||||
String flairstate = yc.getString("flairstate");
|
|
||||||
if (flairstate != null)
|
|
||||||
cp.FlairState = FlairStates.valueOf(flairstate);
|
|
||||||
else
|
|
||||||
cp.FlairState = FlairStates.NoComment;
|
|
||||||
cp.UserNames = yc.getStringList("usernames");
|
|
||||||
cp.FCount = yc.getInt("fcount");
|
|
||||||
cp.FDeaths = yc.getInt("fdeaths");
|
|
||||||
cp.FlairCheater = yc.getBoolean("flaircheater");
|
|
||||||
ChatPlayer.OnlinePlayers.put(cp.UUID, cp);
|
|
||||||
}
|
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerSave(TBMCPlayerSaveEvent e) {
|
public void onPlayerSave(TBMCPlayerSaveEvent e) {
|
||||||
YamlConfiguration yc = e.GetPlayerConfig();
|
YamlConfiguration yc = e.GetPlayerConfig();
|
||||||
|
@ -230,7 +146,6 @@ public class PlayerListener implements Listener {
|
||||||
yc.set("username", cp.UserName);
|
yc.set("username", cp.UserName);
|
||||||
yc.set("flairtime", cp.GetFlairTime());
|
yc.set("flairtime", cp.GetFlairTime());
|
||||||
yc.set("flairstate", cp.FlairState.toString());
|
yc.set("flairstate", cp.FlairState.toString());
|
||||||
yc.set("uuid", cp.UUID.toString());
|
|
||||||
yc.set("usernames", cp.UserNames);
|
yc.set("usernames", cp.UserNames);
|
||||||
yc.set("fcount", cp.FCount);
|
yc.set("fcount", cp.FCount);
|
||||||
yc.set("fdeaths", cp.FDeaths);
|
yc.set("fdeaths", cp.FDeaths);
|
||||||
|
@ -238,15 +153,15 @@ public class PlayerListener implements Listener {
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onPlayerAdd(TBMCPlayerAddEvent e) {
|
public void onPlayerAdd(TBMCPlayerAddEvent event) {
|
||||||
TBMCPlayer p = e.GetPlayer();
|
TBMCPlayer tp = event.GetPlayer();
|
||||||
ChatPlayer player = new ChatPlayer();
|
ChatPlayer cp = new ChatPlayer();
|
||||||
player.UUID = p.UUID;
|
cp.UUID = tp.UUID;
|
||||||
player.SetFlair(ChatPlayer.FlairTimeNone);
|
cp.SetFlair(ChatPlayer.FlairTimeNone);
|
||||||
player.FlairState = FlairStates.NoComment; // TODO: NullPointerException
|
cp.FlairState = FlairStates.NoComment; // TODO: NullPointerException
|
||||||
player.UserNames = new ArrayList<>(); // TODO: Move some code here from
|
cp.UserNames = new ArrayList<>(); // TODO: Move some code here from
|
||||||
// join?
|
// join?
|
||||||
ChatPlayer.OnlinePlayers.put(p.UUID, player);
|
ChatPlayer.OnlinePlayers.put(cp.UUID, cp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
|
|
@ -55,6 +55,7 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
|
||||||
// Fired when plugin is first enabled
|
// Fired when plugin is first enabled
|
||||||
@Override
|
@Override
|
||||||
public void onEnable() {
|
public void onEnable() {
|
||||||
|
Instance = this;
|
||||||
try {
|
try {
|
||||||
PluginMain.Instance.getLogger().info("Extracting necessary libraries...");
|
PluginMain.Instance.getLogger().info("Extracting necessary libraries...");
|
||||||
final File[] libs = new File[] { new File(getDataFolder(), "htmlcleaner-2.16.jar"),
|
final File[] libs = new File[] { new File(getDataFolder(), "htmlcleaner-2.16.jar"),
|
||||||
|
@ -79,7 +80,6 @@ public class PluginMain extends JavaPlugin { // Translated to Java: 2015.07.15.
|
||||||
|
|
||||||
getServer().getPluginManager().registerEvents(new PlayerListener(), this);
|
getServer().getPluginManager().registerEvents(new PlayerListener(), this);
|
||||||
CommandCaller.RegisterChatCommands(this);
|
CommandCaller.RegisterChatCommands(this);
|
||||||
Instance = this;
|
|
||||||
Console = this.getServer().getConsoleSender();
|
Console = this.getServer().getConsoleSender();
|
||||||
LoadFiles(false);
|
LoadFiles(false);
|
||||||
|
|
||||||
|
|
|
@ -24,18 +24,27 @@ public class UpdatePlugin extends AdminCommandBase {
|
||||||
@Override
|
@Override
|
||||||
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
|
public boolean OnCommand(CommandSender sender, String alias, String[] args) {
|
||||||
if (args.length == 0) {
|
if (args.length == 0) {
|
||||||
sender.sendMessage("§6---- Plugin names ----");
|
sender.sendMessage("Downloading plugin names...");
|
||||||
|
boolean first = true;
|
||||||
for (String plugin : TBMCCoreAPI.GetPluginNames()) {
|
for (String plugin : TBMCCoreAPI.GetPluginNames()) {
|
||||||
|
if (first) {
|
||||||
|
sender.sendMessage("§6---- Plugin names ----");
|
||||||
|
first = false;
|
||||||
|
}
|
||||||
sender.sendMessage("- " + plugin);
|
sender.sendMessage("- " + plugin);
|
||||||
}
|
}
|
||||||
}
|
return true;
|
||||||
|
} else {
|
||||||
sender.sendMessage("Updating plugin...");
|
sender.sendMessage("Updating plugin...");
|
||||||
String ret = "";
|
String ret = "";
|
||||||
if ((ret = TBMCCoreAPI.UpdatePlugin(args[0])).length() > 0)
|
if ((ret = TBMCCoreAPI.UpdatePlugin(args[0])).length() > 0) {
|
||||||
|
sender.sendMessage("Internal error: " + ret);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
sender.sendMessage("Updating done!");
|
sender.sendMessage("Updating done!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String GetAdminCommandPath() {
|
public String GetAdminCommandPath() {
|
||||||
|
|
Loading…
Reference in a new issue