Помогите Поделить и телепортировать игроков

Kolia1_1

Активный участник
Пользователь
Баллы
66
Имя в Minecraft
kolia1_1
Есть N-количество локаций(list) и Есть N-количество игроков(list) нужно их телепортировать в N-локацию что-бы было по-ровно между локациями

1 локация: 5 игроков
2 локация: 5 игроков
3 локация: 5 игроков

подскажите куда смотреть и готовый код если можно
 
Код:
package Example;

import java.util.ArrayList;
import java.util.List;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.entity.Player;

public class Locations implements Comparable<Locations> {
    private List<String> players;
    private Location loc;

    public Locations(Location loc) {
        this.players = new ArrayList<String>();
    }

    public void addPlayer(Player player) {
        this.players.add(player.getName());
    }

    private Integer getSize() {
        return this.players.size();
    }

    public void teleportPlayers() {
        this.players.forEach(player -> {
            Player p = Bukkit.getPlayerExact(player);
            if (p != null) {
                p.teleport(this.loc);
            }
        });
    }

    @Override
    public int compareTo(Locations locations) {
        return locations.getSize().compareTo(this.getSize());
    }

    @Override
    public String toString() {
        return loc + ":" + players;
    }
}
Код:
    public void addPlayer(List<Locations> locations, Player player) {
        locations.sort(null);
        locations.get(locations.size()-1).addPlayer(player);
    }
Код:
    public void teleportAll(List<Locations> locations) {
        locations.forEach(location -> location.teleportPlayers());
    }
Код:
    public void apply(List<Locations> locations, Collection<? extends Player> players) {
        players.forEach(player -> addPlayer(locations, player));
        teleportAll(locations);
    }
Применялка :D
Код:
        List<Locations> location = new ArrayList<Locations>();
        //TODO создание листов: location.add(new Locations(loc));
        apply(location, Bukkit.getOnlinePlayers());
 
Последнее редактирование:
Код:
package Example;

import java.util.ArrayList;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.entity.Player;

public class Locations implements Comparable<Locations> {
    private List<Player> players;
    private Location loc;

    public Locations(Location loc) {
        players = new ArrayList<Player>();
    }

    public Location getLocation() {
        return this.loc;
    }

    public void addPlayer(Player player) {
        this.players.add(player);
    }

    public Integer getSize() {
        return this.players.size();
    }

    @Override
    public int compareTo(Locations server) {
        return server.getSize().compareTo(this.getSize());
    }

    @Override
    public String toString() {
        return loc + ":" + players;
    }
}

Код:
    public void addPlayer(List<Locations> locations, Player player) {
        locations.sort(null);
        locations.get(locations.size()-1).addPlayer(player);
    }

Очень много строчек. Вырубай)
 
Код:
package Example;

import java.util.ArrayList;
import java.util.List;
import org.bukkit.Location;
import org.bukkit.entity.Player;

public class Locations implements Comparable<Locations> {
    private List<Player> players;
    private Location loc;

    public Locations(Location loc) {
        players = new ArrayList<Player>();
    }

    public Location getLocation() {
        return this.loc;
    }

    public void addPlayer(Player player) {
        this.players.add(player);
    }

    public Integer getSize() {
        return this.players.size();
    }

    @Override
    public int compareTo(Locations server) {
        return server.getSize().compareTo(this.getSize());
    }

    @Override
    public String toString() {
        return loc + ":" + players;
    }
}

Код:
    public void addPlayer(List<Locations> locations, Player player) {
        locations.sort(null);
        locations.get(locations.size()-1).addPlayer(player);
    }
Вкусна)))
 
неподходит я не понимаю
 
List<Location> list1 = new ArrayList<>(...);
List<Player> list2 = new ArrayList<>(Bukkit.getonlineplayers);

... teleport
 
PHP:
List<Location> location= ...;
List<Player> players = Bukkit.getonlineplayers;
List<List<Player>> users = Lists.partition(players, (int)Math.round(players.size() / location.size()));

for (int i = 0; i != users.size(); i++) {
    for (Player p users.get(i)) {
        p.teleport(location.get(i))
    }
}

Как-то так
 
Последнее редактирование:
PHP:
List<List<Player>> users = Lists.partition(Bukkit.getonlineplayers, 5);
List<Location> location= ...;

for (int i = 0; i != users.size(); i++) {
    for (Player p users.get(i)) {
        p.teleport(location.get(i))
    }
}

Как-то так
Не знаю правильно ли это но мне не по душе
 
Назад
Верх