Wie bekomme ich dass Terrain wo der Spieler hinguckt ?

  • Hey,


    Ich will ein kleines Plugin schreiben, wo ich einen eigenen größeren minenboher habe.
    Ich hab mir ein Object erstellt, etc. und hab mir eine Methode erstllt, die beim clicken aufgerufen wird.


    Dass problem dass ich jetzt habe ist, wie bekomm ich dass Terrain wo der spieler hinschaut ?


    Java
    public void mine(Player player, World world) {
    Vector3f playerPosition = player.getPosition();
    Vector3f playerViewDirection = player.getViewDirection();


    mit

    Java
    world.setTerrainDataInRadius();

    kann ich ja dass Terrain verändern. Aber wie bekomm ich jetzt anhand der playerPosition und der playerViewDirektion die ja Vector3f sind die 2 Vector3i ?



    Ich hoffe, ihr könnt mir dabei helfen.
    Vielen Dank im vorraus


    _pasi

  • Um eine "globale Position" in eine Chunk- und Block-Position umzuwandeln (also Vector3f in zwei Vector3i), kannst du die statischen ChunkUtils Funktionen verwenden ;) Bspw. mit der ChunkUtils.getChunkAndBlockPosition() Funktion, bei welcher du allerdings zwei Vector3i mit übergeben musst (in welchen dann die Chunk und Block Position gespeichert wird), zB:

    Java
    Vector3i chunkPos = new Vector3i();
    Vector3i blockPos = new Vector3i();
    Utils.ChunkUtils.getChunkAndBlockPosition(position, chunkPos, blockPos);


    Davon gibt es in der ChunkUtils-Klasse auch einzelne Funktionen, um die jeweiligen X, Y und Z Koordinaten zu erhalten (ohne den Overhead neuer Vector3i Objekte).


    Wenn du den exakten Punkt ermitteln möchtest, den der Spieler aktuell anschaut, bzw. genau genommen der Punkt, in welchem die Sichtlinie des Spielers mit dem Terrain kollidiert, könntest du die raycast() Funktion des Spielers verwenden. Als Resultat erhälst du ein RayCastResult, wie @noci erwähnt hat, oder "nichts", falls momentan kein Terrain angeschaut wird. Die Dokumentation enthält dazu ein paar Beispiel-Codezeilen :)

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!