私は、いくつかの方法と、週に 1 回使用できるアクション/「コマンド」に対する応答 (スパム防止) に取り組もうとしています。私の唯一の問題は、Java 時間を 1 週間に設定する方法です。これは私が持っているものです:
public static long displayTime;
方法:
public static boolean setDisplayName(Player player, String displayName) {
synchronized (cachedNames) {
if((SerializableFilesManager.containsPlayer(Utils.formatPlayerNameForProtocol(displayName)) || cachedNames.contains(displayName) || !cachedNames.add(displayName)))
return false;
if(player.hasDisplayName())
cachedNames.remove(player.getDisplayName());
}
displayTime = System.currentTimeMillis() + (1000*60*60);
String displayname = player.getDisplayName();
player.setDisplayName(displayName);
FriendChatsManager.refreshChat(player);
Highscores.highscores(player, displayname);
player.getAppearence().generateAppearenceData();
return true;
}
public static String convertToTime() {
String time = "You have to wait "+(getTime() == 0 ? "few more seconds" : getTime()+" minutes")+" to change your display name again!";
return time;
}
public static int getTime() {
return (int) (displayTime-System.currentTimeMillis()/60000);
}
「週」の時間に変更しようとしているのは、displayTime = System.currentTimeMillis() + (1000*60*60); です。. (1000*60*60) は 24 時間だと思いますが、正しいですか? これが私の唯一の問題です。これが解決されると、ユーザーは週に 1 回だけコマンドを使用できるようになります。コマンドはここにあります:
case "setdisplay":
if (DisplayNames.displayTime > System.currentTimeMillis()) {
player.getPackets().sendGameMessage(DisplayNames.convertToTime());
return true;
}
if (!player.isDonator() && !player.isExtremeDonator()) {
player.getPackets().sendGameMessage(
"You do not have the privileges to use this.");
return true;
}
DisplayNamesは、メソッドとすべてが入っているクラスです。すべての助けに感謝します。これはばかげた質問だと確信しています:P.
〜デレク