ServerPlugin "Sitzen" - Festhalten eines Entitys

Dieses Thema im Forum "Programmierung" wurde erstellt von Janhektor, 29. September 2014.

  1. Janhektor
    Offline

    Janhektor

    Registriert seit:
    10. Januar 2013
    Beiträge:
    11
    Hallo Minecraft-Server.eu Community,

    ich habe mal eine Frage bezüglich der Entwicklung von Bukkit-/Spigot-Plugins.

    Mein Ziel
    Ich möchte einen Spieler auf ein Entity setzen, das Entity unsichtbar machen und auf seiner Position fixieren.
    Das soll dann so aussehen, als würde der Spieler "sitzen".
    Man könnte z.B. bei einem Rechtsklick auf Stairs das Entity auf den Stairs spawnen und den Spieler drauf setzen.
    Oder man lässt den Spieler auf einem Block sitzen.
    Als Entity hätte ich an einen ItemDrop gedacht. Der ist "schön klein" und ich kann dafür sorgen, dass Spieler ihn nicht aufsammeln können.

    Mein Problem
    Ein Entity kann ich spawnen und unsichtbar machen kann ich es auch. Dafür ließe sich, denke ich, der Unsichtbarkeits-Effekt nutzen.
    Nur wie fixiere ich das Entity auf seinem Punkt?
    Einen Scheduler jeden Tick durchlaufen lassen und es teleportieren würde ich jetzt nicht unbedingt anstreben...


    Würde mich freuen, wenn mir jemand kurz einen Vorschlag, einen Ansatz oder eine Idee gibt, wie sich das "Festhalten" relativ gut umsetzen ließe.

    Mit freundlichen Grüßen
    Janhektor
     
    #1
  2. Ohelert
    Offline

    Ohelert

    Registriert seit:
    2. Dezember 2013
    Beiträge:
    138
    Minecraft:
    Aurazara
    gibts schon in andern plugins (falsebook mit protocolib) flt mal daa suchen ofer nach stair sitting plugin suchen
     
    #2
  3. _Baum_
    Offline

    _Baum_

    Registriert seit:
    4. August 2013
    Beiträge:
    66
    Minecraft:
    PlueschAffe
    Hi @Janhektor,

    Ja solche Plugins gibt es tatsächlich bereits. Sie nutzen, oder zumindest einer, den ich schon mal "in Action" gesehen habe, Pfeile als Entity zum draufsetzen, da diese sich nicht bewegen können erübrigt sich dein Problem.
    Soweit ich weiß bewegen sich Items üblicherweise nicht (soll heißen: sie bewegen sich nicht).

    Bei dem Unsichtbar machen deines Items gibt es aber ein Problem: Das Item entstammt nicht der Klasse "LivingEntity" un kann somit keine Trank-Effekte erhalten. Würdest du beispielsweise ein Schwein nutzen, kannst du diesem auch gleich den Effekt "Langsamkeit" 7+ geben. Leider können Schweine meines Wissens nicht innerhalb von Blocks existieren und werden "raufgebugt".

    Inwiefern es aber möglich ist eine unsichtbare Einheit zu erstellen, die sich nicht selber bewegen kann, ist eine andere Frage. Und die Antwort ist: Ja, es gibt eine Einheit die unter bestimmten Umständen bewegungsunfähig, komplett unsichtbar und unlebendig ist: ein verbranntes Item.
    Verbrannte Items existieren, nach ihrem "Tod" noch eine gewisse Zeit bis der GarbageCollector sie löscht. Um herauszufinden, ob ein Item tot bzw. verbrannt ist, nutze:
    Code (Text):
    1. item.isDead();
    Wie man ein Item "tötet":
    Code (Text):
    1. item.setFireTicks(10);//Muss noch getestet werden
    Ob man folgenden Code mit solchen Items durchführen kann, finde ich mal kurz raus:
    Code (Text):
    1. item.setPassenger(player);
    2. item.setPickupDelay(999999999);//Unprofessionell? Und wenn? ^^
    EDIT* Tote Items kann man leider nicht mehr modifizieren :(

    Sonst würde ich es mit Pfeilen lösen, so machen es die meisten Plugins, die ich in diesem Bezug kenne auch.

    Ich hoffe ich konnte helfen ^^

    MfG
    _Baum_
     
    #3
  4. Janhektor
    Offline

    Janhektor

    Registriert seit:
    10. Januar 2013
    Beiträge:
    11
    Vielen Dank für eure Antworten!

    Ich werde mir mal eines dieser Plugins herauspicken und mal in den Quellcode schauen (sofern die Lizenz dies erlaubt).
    Vielleicht werde ich ja fündig.

    Die Idee mit dem Pfeil ist ja schon mal ein guter Ansatz - Vielen Dank!
     
    #4