• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Teleporter Problem

Kookami

Minecrafter
Registriert
22 Oktober 2017
Beiträge
19
Diamanten
0
Hallu.
Eigentlich sollte mein Plugin so Funktionieren:
Der Spieler befindet sich an einer bestimmten Locaion und wird dann wo anders hin Teleportiert!
Aber das hatt leider nicht funktionier xD.

Source Code:

@EventHandler
public void teleportplayer(PlayerMoveEvent e) {

Player p = e.getPlayer();
Location loc1 = new Location(Bukkit.getWorld(world),x,y,z);
Location loc2 = new Location(Bukkit.getWorld("world"),100,100,100);




if(p.getLocation().getBlock() == loc2) {
p.sendMessage("You get Tp´t");
p.teleport(loc1);
}

}

Bitte um Hilfe!
Mfg - Kookami
 
F

Figz

Guest
if(p.getLocation().getBlock() == loc2) {

Du vergleichst erstmal die REFERENZ einer Location, mit der eines Blocks. Das wird alle immer False zurückgeben.

Die Frage ist einfach mal wieder.. Was hast du vor?

Wozu die beiden Locations und warum vergleichst du diese vorher?

WARUM teleportierst du jemanden im Handler eines PlayerMoveEvents??

Code:
  Player p = e.getPlayer();
  Location loc = new Location(Bukkit.getWorld("world"), 100, 100, 100);
  p.teleport(loc);
  p.sendMessage("Du wurdest teleportiert");
 

Kookami

Minecrafter
Registriert
22 Oktober 2017
Beiträge
19
Diamanten
0
Ich will das der Spieler so bald er sich an einem bestimmten Ort befindet , teleportier wird!
Ich habe das ganze auch schon ohne ".getBlock()" sondern nur mit "getLocation()" ausprobiert ... hat auch nicht funktioniert!

Ich erkläre jetzt nochmal ganz simple anhand des Codes:

@EventHandler
public void teleportplayer(PlayerMoveEvent e) { //Sobald der Spieler sich....

Player p = e.getPlayer();
Location loc1 = new Location(Bukkit.getWorld(world),x,y,z);
Location loc2 = new Location(Bukkit.getWorld("world"),100,100,100);




if(p.getLocation().getBlock() == loc2) { //.. an einer bestimmten Location befindet...
p.sendMessage("You get Tp´t");
p.teleport(loc1); //... wird er Teleportiert!
}

}

-----------------------------------------------------------------

Bei deinem Code @Figz wird garnicht erst darauf geachtet WO der Spieler sich befindet und einfach so Teleportiert!


Bitte um Hilfe!!!
 
Zuletzt bearbeitet:

ES-Henne

Redstoneengineer
Registriert
3 Oktober 2017
Beiträge
41
Diamanten
0
Du prüfst die genaue Position des Spielers. Allerdings ist es sehr unwahrscheinlich, dass er sich genau auf der Koordinate befindet. Prüfe besser ob die Koordinaten des Spielers ungefähr mit den Wunsch Koordinaten übereinstimmen. Also prüfe besser einen Bereich.
 
Zuletzt bearbeitet:
F

Figz

Guest
Du prüfst die genaue Position des Spielers. Allerdings ist es sehr unwahrscheinlich, dass er sich genau auf der Koordinate befindet. Prüfe besser ob die Koordinaten des Spielers ungefähr mit den Wunsch Koordinaten übereinstimmen. Also prüfe besser einen Bereich.

Stimmt nicht so ganz. Kommt ganz drauf an, was er für eine Welt hat.

@Kookami Bitte verwende in Zukunft Codetags..

Code:
@EventHandler
public void teleportplayer(PlayerMoveEvent e) { 

Player p = e.getPlayer();
Location loc1 = new Location(Bukkit.getWorld(world),x,y,z);
Location loc2 = new Location(Bukkit.getWorld("world"),100,100,100);

// bin mir gerade nicht mehr sicher, könnte sein dass du auch p.getLocation().subtract(0, 1, 0).getBlock() verwenden musst. 
if(p.getLocation().getBlock() == loc2.getBlock()) { 
p.sendMessage("You get Tp´t"); 
p.teleport(loc1); 
}

}
 

Kookami

Minecrafter
Registriert
22 Oktober 2017
Beiträge
19
Diamanten
0
@Figz Hab beider ausprobiert . Nichts hat funktioniert. @ES-Henne Schön und gut aber wie ?

Ganze Klasse :
Code:
public class stargatemain extends JavaPlugin implements Listener {
  
  
    public String world = "world";
    public double x = 3.691;
    public double y = 68.0;
    public double z = 45.268;
  
    
  
  
  
    @Override
    public void onEnable(){
        loadConfig();
      
        this.getServer().getPluginManager().registerEvents(this,this);
      
    }
  
  
      
      
  
    @EventHandler
    public void teleportplayer(PlayerMoveEvent e) {
   
    Player p = e.getPlayer();
    Location loc1 = new Location(Bukkit.getWorld(world),x,y,z);
    Location loc2 = new Location(Bukkit.getWorld("world"),100,100,100);
  
    // bin mir gerade nicht mehr sicher, könnte sein dass du auch p.getLocation().subtract(0, 1, 0).getBlock() verwenden musst.
    if(p.getLocation().subtract(0 , 1 , 0).getBlock().equals(loc2)) {
    p.sendMessage("You get Tp´t");
    p.teleport(loc1);
    }
   
    }
    //...
 
F

Figz

Guest
Code:
public class stargatemain extends JavaPlugin implements Listener {
  public String world = "world";
  public double x = 3.691;
  public double y = 68.0;
  public double z = 45.268;
   
  @Override
  public void onEnable(){
  loadConfig();
   
  this.getServer().getPluginManager().registerEvents(this,this);
   
  }
   
   
  @EventHandler
  public void teleportplayer(PlayerMoveEvent e) {
   
  Player p = e.getPlayer();
  Location loc1 = new Location(Bukkit.getWorld(world),x,y,z);
  Location loc2 = new Location(Bukkit.getWorld("world"),100,100,100);
  // bin mir gerade nicht mehr sicher, könnte sein dass du auch p.getLocation().subtract(0, 1, 0).getBlock() verwenden musst.
  if(p.getLocation().getBlock() == loc2.getBlock()) {
  p.sendMessage("You get Tp´t");
  p.teleport(loc1);
  p.sendMessage("Schmeiss die zweite Abfrage raus");
  }
  else if(p.getLocation().subtract(0, 1, 0).getBlock() == loc2.getBlock()) {
  p.sendMessage("You get Tp´t");
  p.teleport(loc1);
  p.sendMessage("Schmeiss die erste Abfrage raus");
  }

  }
  //...

Versuch das, kann es leider derzeit selbst nicht testen.
 

ES-Henne

Redstoneengineer
Registriert
3 Oktober 2017
Beiträge
41
Diamanten
0
F

Figz

Guest
Dann musst du mir jetzt erklären, was die Welt mit dem Koordinatensystem zutun hat.

Wenn er die Welt so aufgebaut hat, dass der Spieler auf genau einen Block geleitet wird, dann kann er so wie ich auf die Block koordinaten abfragen ;)

Aber ja, du hattest schon recht ;) Wenn er auf die exakte Position des Spielers abfragt wird es schwer..

SO konnte es jetzt mal testen^^
Das sollte funktionieren...

Code:
public class stargatemain extends JavaPlugin implements Listener {
  public String world = "world";
  public double x = 3.691;
  public double y = 68.0;
  public double z = 45.268;
 
  @Override
  public void onEnable(){
  loadConfig();
 
  this.getServer().getPluginManager().registerEvents(this,this);
 
  }
 
 
  @EventHandler
  public void teleportplayer(PlayerMoveEvent e) {
 
  Player p = e.getPlayer();
  Location loc1 = new Location(Bukkit.getWorld(world),x,y,z);
  Location loc2 = new Location(Bukkit.getWorld("world"),100,100,100);

  if(p.getLocation().getBlock().getLocation().equals(loc2.getBlock().getLocation()) {
  p.sendMessage("You get Tp´t");
  p.teleport(loc1);
  p.sendMessage("Schmeiss die zweite Abfrage raus");
  }

  }
  //...
 
Zuletzt bearbeitet von einem Moderator:
Oben