Я создаю плагин Spleef. Мне нужно подсчитать количество людей в фойе.Проверьте, сколько человек находится на определенном расстоянии от центра
Я думал, что могу подсчитать, сколько людей находится на некотором расстоянии от центра лобби. Я думаю, что это может работать лучше, чем запись, когда кто-то вводит команду.
Main.java:
package me.olsyboy.spleef;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.bukkit.configuration.file.YamlConfiguration;
import java.util.Arrays;
import java.util.List;
public class Main extends JavaPlugin {
public void onEnable(int amountOfPlayers) {
amountOfPlayers = 0;
loadConfiguration();
reloadConfig();
}
public void onDisable() {
saveDefaultConfig();
}
public void loadConfiguration() {
//See "Creating you're defaults"
getConfig().options().copyDefaults(true); // NOTE: You do not have to use "plugin." if the class extends the java plugin
//Save the config whenever you manipulate it
saveDefaultConfig();
}
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
Player player = (Player) sender;
if (cmd.getName().equalsIgnoreCase("spleef")) {
if (args[0].equalsIgnoreCase("setgame")) {
if (args.length == 2) {
String gameName = args[1]; //initialize the gameName variable here
getConfig().set("Game Locations." + gameName + ".Location", Arrays.asList(player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ(), player.getLocation().getPitch(), player.getLocation().getYaw(), player.getLocation().getWorld().getName()));
getConfig().options().copyDefaults(true);
saveConfig();
player.sendMessage(ChatColor.AQUA + "[Spleef] " + ChatColor.YELLOW + "Spleef Game Location Set");
}
}
if (args[0].equalsIgnoreCase("join")) {
String gameName = args[1]; //initialize the gameName variable here
List<String> joinGameLocation = this.getConfig().getStringList("Game Locations." + gameName + ".Location");
String xPos = joinGameLocation.get(0);
double xPos2 = Double.parseDouble(xPos);
String yPos = joinGameLocation.get(1);
double yPos2 = Double.parseDouble(yPos);
String zPos = joinGameLocation.get(2);
double zPos2 = Double.parseDouble(zPos);
String pitch = joinGameLocation.get(3);
float pitch2 = Float.parseFloat(pitch);
String Yaw = joinGameLocation.get(4);
float Yaw2 = Float.parseFloat(Yaw);
World actualWorld = Bukkit.getWorld(joinGameLocation.get(5));
Location spleefGameLocation = new Location(actualWorld, xPos2, yPos2, zPos2);
spleefGameLocation.setPitch(pitch2);
spleefGameLocation.setYaw(Yaw2);
player.teleport(spleefGameLocation);
}
else if (!(args[0].equalsIgnoreCase("setgame"))) {
if (!args[0].equalsIgnoreCase("join")) {
player.sendMessage("/spleef join {GameName}");
}
}
}
return true;
}
}
playerJoinedGame.java:
package me.olsyboy.spleef;
public class playerJoinedGame extends Main {
public void onPlayerJoin(int amountOfPlayers)
{
amountOfPlayers = amountOfPlayers + 1;
}
}
Я не назвал onPlayerJoin
метод из основного класса еще.
Я открыт для всех, кто имеет лучшие способы подсчета количества людей в холле.
Просто дополнительная записка о ваших методах подсчета игроков. Прежде всего, полезный совет: используйте «amountOfPlayers + = 1» или «amountOfPlayers ++», это увеличит числовое поле (целые числа, парные, поплавки и т. Д.) Более чистым способом. Другой способ получить количество игроков на сервере: Bukkit.getOnlinePlayers(). Length; или Bukkit.getOnlinePlayers.size(); (в зависимости от версии, которую вы используете). Вы можете использовать это в виде Runnable или с помощью событий PlayerJoin/PlayerQuit. – Momo