11package com .github .elic0de .hungergames .game ;
22
33import com .github .elic0de .hungergames .HungerGames ;
4+ import net .md_5 .bungee .api .ChatMessageType ;
5+ import net .md_5 .bungee .api .chat .TextComponent ;
46import org .bukkit .Bukkit ;
57import org .bukkit .WorldBorder ;
8+ import org .bukkit .entity .Player ;
69import org .bukkit .scheduler .BukkitRunnable ;
710import org .bukkit .scheduler .BukkitTask ;
811
@@ -45,7 +48,8 @@ public void run() {
4548 return ;
4649 }
4750 game .getBossBar ().setBossBar ("残りのプレイヤー数: &6" + game .getAlivePlayersSize ());
48- game .getBossBar ().setProgress ((double ) Math .max (timeInSeconds - borderTicks .get (), 0 )/timeInSeconds );
51+ game .getBossBar ().setProgress ((double ) Math .max (timeInSeconds - borderTicks .get (), 0 ) / timeInSeconds );
52+ game .getPlayers ().forEach (player -> player .getPlayer ().spigot ().sendMessage (ChatMessageType .ACTION_BAR , TextComponent .fromLegacyText (String .format ("ボーダーとの距離: §a%d§rブロック" , (int ) getDistanceToBorder (player .getPlayer (), border )))));
4953 }
5054 }.runTaskTimer (HungerGames .getInstance (), 0 , PERIOD );
5155 }
@@ -60,4 +64,12 @@ public void reset() {
6064 borderTicks .set (0 );
6165 game .getBossBar ().hide ();
6266 }
67+
68+ private double getDistanceToBorder (Player player , WorldBorder border ) {
69+ final double borderSize = border .getSize ();
70+ return Math .min (
71+ borderSize - Math .abs (player .getLocation ().getX () - border .getCenter ().getX ()),
72+ borderSize - Math .abs (player .getLocation ().getZ () - border .getCenter ().getZ ())
73+ );
74+ }
6375}
0 commit comments