Bukkit Programmieren Spawns + Teleport?

06/05/2014 14:47 .cryptex#1
Hallo Community,

ich habe ein Problem an meinem Plugin, ich würde gerne mal ein
Minigame Programmieren, aber ich habe echt keinen plan, wie ich
so einen Teleport erstelle, wo 24 Spieler auf verschiedene Plätze
Teleportiert werden. z.B Survival Games | Trouble in Mineville | One in the Chamber.

Könnte mir da vielleicht jemand einen Tipp / Code zeigen?

Wäre sehr nett danke,

Mit freundlichen Grüßen
Scarpex
06/05/2014 14:53 lordsill#2
Speichere die Orte z.b. in der config.yml ab.
Anschließend wird einfach aus gelesen und hingeportet.

z.b.

beim Command:
Code:
Location loc = player.getLocation();
int x = loc.getBlockX();
int y = loc.getBlockY();
int z = loc.getBlockZ();
//Evtl noch YAW und PITCH
String welt = loc.getWorld().getName();
Die Variablen speicherst dann in der config

Beim teleportieren, liest du diese dann wieder aus.
Code:
Location loc = new Location(Bukkit.getWorld(welt), x, y, z);
player.teleport(loc);
06/05/2014 15:30 .cryptex#3
Aber das beinhalted nicht das 24 Random spawnen
06/05/2014 15:49 lordsill#4
Du speicherst einfach 24 Orte ab.
Die config.yml könnte dann z.b. so aussehen am ende:
Code:
1:
  X: 1
  Y: 1
  Z: 1
  Welt: world
2:
  X: 2
  Y: 1
  Z: 4
  Welt: world
usw. bis 24

Danach lädst du beim Start alle in eine Liste (schon als Location)
Anschließend nimmst du die 24 Spieler und teleportierst sie zu einer zufälligen Position (benötigt: Math.random() und die größe der Liste von Locations, damit erhälst dann die Zahl X, sodass du dann einfach das X. Element aus der Liste nimmst (damit hast dann die Location, zu die der Spieler geportet werden soll))
Nach dem ein Spieler teleportiert wurde, entfernst du die Location wieder aus der Liste (damit Spieler 2 nicht zufällig bei Spieler 1 landet)
06/05/2014 16:13 .cryptex#5
Ja sry, das ich mich bischen falsch ausgedrückt habe. Das mit der Liste ist mein Problem, wie mache ich da alles rein und teleportiere die leute dann auch
06/05/2014 16:22 False#6
Code:
for (Player p: Bukkit.getOnlinePlayers()) {
//teleport player (wird für jeden ausgeführt)
}
Und wie gesagt wurde die variablen läds du aus einer Config.
Such einfach mal nach Bukkit Confi Tutorial und benutz dein Hirn ein wenig, ansonsten lern erstmal Java richtig bzw schreib leichtere Plugins vorerst ;)
06/05/2014 16:23 lordsill#7
Code:
public class MeineKlasse extends JavaPlugin {

private List<Location> locList = new ArrayList<Location>();

//Weitere Code wie onEnable, onDisable etc.

private void loadList()
{
if(locList.size() != 0) locList.clear();
for(int i = 1; i < 25; i++)
{
locList.add(new Location(Bukkit.getWorld(getConfig().getString(i + ".Welt")), getConfig().getInt(i + ".X"), ....));
}
}

private void teleportPlayer(Player player)
{
int random = Zufallszahl zw. 0 und 23 (sind 24 Elemente)
Location loc = locList.get(random);
player.teleport(loc);
locList.remove(random);
}

}
Edit: und ich muss .ƒaℓsє. Recht geben, vllt solltest du vorher erstmal ein wenig Java lernen, bevor du dich an Plugins wie Minigames ranmachst. Ansonsten wirst du immer wieder auf Probleme stoßen