Skip to content

Commit

Permalink
退席状態のときテレポートキャンセル実装
Browse files Browse the repository at this point in the history
  • Loading branch information
kanasaki15 committed Aug 3, 2020
1 parent 0bb4ba0 commit 882f515
Show file tree
Hide file tree
Showing 4 changed files with 33 additions and 9 deletions.
32 changes: 24 additions & 8 deletions src/main/java/xyz/n7mn/dev/afkplugin/AfkEventListener.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,31 +4,47 @@
import com.google.gson.GsonBuilder;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerMoveEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.event.player.PlayerTeleportEvent;
import org.bukkit.event.player.*;
import org.bukkit.plugin.Plugin;

import java.util.Collection;
import java.util.Date;
import java.util.List;

class AfkEventListener implements Listener {

private final AfkFunction afk = new AfkFunction();
private final Plugin plugin = Bukkit.getPluginManager().getPlugin("AfkPlugin");
private Player tpCommandExePlayer = null;

@EventHandler(priority = EventPriority.HIGHEST)
public void PlayerCommandPreprocessEvent (PlayerCommandPreprocessEvent e){
if (e.getMessage().startsWith("/tp @a") || e.getMessage().startsWith("/tp @e") || e.getMessage().startsWith("/teleport @a") || e.getMessage().startsWith("/teleport @e")){
tpCommandExePlayer = e.getPlayer();
}

Object[] player = Bukkit.getServer().getOnlinePlayers().toArray();
for (int i = 0; i < player.length; i++){
Player pp = (Player) player[i];

if (e.getMessage().startsWith("/tp "+pp.getName()+" ") || e.getMessage().startsWith("/teleport "+pp.getName()+" ")){
tpCommandExePlayer = e.getPlayer();
}
}
}

@EventHandler
public void PlayerTeleportEvent (PlayerTeleportEvent e){
System.out.println("Player : " + e.getPlayer().getName());
System.out.println("Cause : " + e.getCause());

if (afk.isAfk(e.getPlayer())){
if (e.getFrom().getBlockX() != e.getTo().getBlockX() || e.getFrom().getBlockY() != e.getTo().getBlockY() || e.getFrom().getBlockZ() != e.getTo().getBlockZ()){
e.getPlayer().sendMessage(ChatColor.YELLOW + afk.GetMessage("afkMove"));
if (e.getCause().equals(PlayerTeleportEvent.TeleportCause.COMMAND) && tpCommandExePlayer != null){
tpCommandExePlayer.sendMessage(ChatColor.YELLOW + afk.GetMessage("tpTarget").replaceAll("\\[user\\]",tpCommandExePlayer.getName()));
}
// e.getPlayer().sendMessage(ChatColor.YELLOW + afk.GetMessage("afkMove"));
e.setCancelled(true);
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/main/java/xyz/n7mn/dev/afkplugin/AfkFunction.java
Original file line number Diff line number Diff line change
Expand Up @@ -174,6 +174,8 @@ public String GetMessage(String msg){
if (msg.equals("ConsoleUserAfkOnToTarget")){ return list.getConsoleUserAfkOnToTarget(); }
if (msg.equals("ConsoleUserAfkOffToTarget")){ return list.getConsoleUserAfkOffToTarget(); }
if (msg.equals("afkAutoOn")){ return list.getAfkAutoOn(); }
if (msg.equals("tpTarget")){ return list.getTpTarget(); }


return "";
}
Expand Down
3 changes: 2 additions & 1 deletion src/main/java/xyz/n7mn/dev/afkplugin/AfkPlugin.java
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@ public void onEnable() {
" \"UserAfkOffToTarget\": \"[user]さんから退席状態を解除されました。\",\n" +
" \"ConsoleUserAfkOnToTarget\": \"管理者から退席状態に指定されました。 解除するには/afkを実行してください。\",\n" +
" \"ConsoleUserAfkOffToTarget\": \"管理者から退席状態を解除されました。\",\n" +
" \"afkAutoOn\": \"[min]分[sec]秒放置されているのを検知したため退席状態になりました。 \"\n" +
" \"afkAutoOn\": \"[min]分[sec]秒放置されているのを検知したため退席状態になりました。 \",\n" +
" \"tpTarget\": \"[user]さんは現在退席中のため、テレポートをキャンセルしました。\"\n" +
"}";
new AfkFunction().fileWrite(defaultPass, json);
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/xyz/n7mn/dev/afkplugin/MessageList.java
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ class MessageList {
private String ConsoleUserAfkOnToTarget;
private String ConsoleUserAfkOffToTarget;
private String afkAutoOn;
private String tpTarget;

public String getAfkOn() {
return afkOn;
Expand Down Expand Up @@ -61,4 +62,8 @@ public String getConsoleUserAfkOffToTarget() {
public String getAfkAutoOn() {
return afkAutoOn;
}

public String getTpTarget() {
return tpTarget;
}
}

0 comments on commit 882f515

Please sign in to comment.