[Problema] Aiuto minigame arena (Locations)

Ciao ragazzi, tuttora mi sto cimentando nel mio primo minigame arena, Sono riuscito a scrivere la base per iniziare a programmare il minigioco in sè, ma mi è venuto un piccolo dubbio: Io ho bisogno di 5 Locations differenti per arena, la lobby e 4 spawn diversi per i 4 giocatori.
Mettiamo il caso che l'arena sia un quadrato, e io voglio teleportare ogni giocatore ad un angolo differente alla fine del countdown.

Prima domanda: Dato che le locations sono salvate inizialmente in un arraylist, per evitare che vengano cancellate a ogni reload/restart come posso fare? (avevo pensato di salvarle in un file .yml e poi di caricarle con un foreach, anche se non ho ancora capito come funzionino i file .yml, quindi si, non ho ancora provato)

Seconda domanda: una volta finito il countdown quando l'arena starta, come faccio ad essere sicuro che ogni player venga teleportato a uno spawn differente dagli altri? il metodo math.random da solo non penso vada troppo bene, dato che c'è qualche possibilità che due o più player si ritrovino nello stesso spawn.
Grazie in anticipo Smile.
@Federico7thbest
Allora, innanzitutto devi creare per forza dei file .yml, ti consiglio di creare una classe per gestirli, ci sono molti tutorial sul forum di Bukkit
Quindi, crei per esempio il file arenas.yml, dove inserirai i dati delle varie arene. Io ti consiglio di assegnare un ID ad ogni spawn, con i, quale poi otterrai la Location dall'ArrayList. Per esempio, in un file yml fai questo:
arenas:
0:
name: deserto
spawns:
0:
world:
x:
y:
z:
yaw:
pitch:
(lo fai per ogni spawn)
Quindi:

Codice:
for(String sIdD : FileConfiguration.getConfigurationSection("arenas."+arenaID+".spawns").getKeys(false)


{


    int ID = Integer.parseInt(sID);


    //Qui inserisci una Location creata ottenendo le varie coordinate


    Location loc = new Location(Bukkit.getServer().getWorld(FileConfiguration.getString("arenas." +arenaID+".spawns."+ID+".world"), FileConfiguration.getDouble("arenas" +arenaID+".spawns."+ID+".x"), qui lo fai con y, z, qui lo fai con float, pitch mettendoci davanti (float) per convertirle appunto in un float)


//Poi, dovrai aver fatto una classe Arena, da cui istanzi le varie arene, quindi usa l'ArrayList di location per gli spawna che avrai e ci aggiungi questa location:


arena.spawns.add(loc);

Per ottenere lo spawn ti basterá fare arenas.spawns.get(ID)

Per la seconda cosa, io farei così:
int sCount = 0;
Quando cerca di entrare un giocatore:

Codice:
if(!arena.spawns.size()=<sCount)


{


   player.teleport(sCount)


   sCount++;


   //non l'hai chiesto ma ti consiglio di creare un arraylist con i giocatori in game


}


else


{


//partita piena


}


Scusa se mi sono espresso male, non è facile spiegare e non sono al pc... (Modificato 23/04/2016, 17:13 da Nexgan.)
1 utente apprezza questo post
@Nexgan tranquillo ho capito, grazie per la dritta sulle locations. Ora provo e ti so dire se riesco Big Grin.
Per il teleport forse hai capito male tu, ho già un metodo che quando un player entra controlla che l'arena non sia piena e poi lo fa entrare, quello che intendo io è:
Entrano 4 giocatori, vengono tutti spawnati alla stessa location (cioè quella della lobby) dove poi sceglieranno il loro kit,
alla fine del countdown devono essere teletrasportati nei 4 spawn settati in precedenza e il metodo math.random non va bene da solo, perchè come detto prima, c'è una possibilità che due o più giocatori si trovino nello stesso posto.
@Federico7thebest
Allora:
Codice:
int sCount = 0;

//Quando un player deve essere teletrasportato, avviene questo metodo:
public void teleportPlayer(Player player)
{
  Location spawn = arena.spawns.get(sCount)    //(Ora te lo scrivo così ma ti consiglio di mettere in pratica la programmazione ad oggetti
  sCount++;
  player.teleport(spawn);
}
@Nexgan ahhhhhhhhhh ora ho capito, grazie mille Big Grin
Discussioni simili
Discussione: Autore Risposte: Letto: Ultimo
[Domanda] Aiuto nella creazione di un plugin destinyshadow02 2 60 20/08/2017, 20:37
Ultimo: Maxetto
[Domanda] aiuto non so fare una cosa camiu 3 316 16/02/2017, 20:30
Ultimo: zOudeis
[Problema] Aiuto per primo plugin SandT 7 754 26/07/2016, 14:40
Ultimo: SandT
[Problema] Mi servirebbe un aiuto ImWhiggiPvP 2 263 18/07/2016, 13:44
Ultimo: ImWhiggiPvP
[Problema] Aiuto in PHP enry_2000ts 29 981 18/06/2016, 20:31
Ultimo: ClauWeb

Utente(i) che stanno guardando questa discussione: 1 Ospite(i)