Block tarnen?

Dieses Thema im Forum "Programmierung" wurde erstellt von Sn0wBlizz4rd, 13. Juli 2013.

  1. Sn0wBlizz4rd
    Offline

    Sn0wBlizz4rd

    Registriert seit:
    26. September 2012
    Beiträge:
    424
    Minecraft:
    Sn0wBlizz4rd
    Hey Leute,
    ich habe eine Frage.
    Ich arbeite zur Zeit an einem Plugin, nun will ich aber dass sich Spieler als bewegende Blöcke tarnen können. Nicht dass 1 mal die Sekunde ein Block beim Spieler oder ähnliches gespawnt wird, sondern dass es so aussieht als würden sie sich normal bewegen. Das ist möglich, ich habe es schon auf mehreren Servern gesehen. Ich habe bereits versucht einen FallingBlock zu Spawnen, und diesen eine Velocity in Richtung des Spielers zu setzen, ohne Erfolg. Irgendwelche Ideen?
     
    #1
  2. Kolola
    Offline

    Kolola

    Registriert seit:
    12. Juli 2012
    Beiträge:
    358
    Ort:
    Dor Ham
  3. Sn0wBlizz4rd
    Offline

    Sn0wBlizz4rd

    Registriert seit:
    26. September 2012
    Beiträge:
    424
    Minecraft:
    Sn0wBlizz4rd
    Das hatte ich schon probiert (Auch die API) aber es ist leider sehr buggy, und der Block bewegt sich nicht flüssig :(
     
    #3
  4. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Bei Chameleon Armor tarnt man sich zwar nicht als Block, aber die Rüstunr färbt sich so, wie der Block hinter einem aussieht. Vielleicht wäre das Möglich...
     
    #4
  5. Sn0wBlizz4rd
    Offline

    Sn0wBlizz4rd

    Registriert seit:
    26. September 2012
    Beiträge:
    424
    Minecraft:
    Sn0wBlizz4rd
    Chameleon Armor ist leider auch nicht was ich suche :(

    PS: 400. Beitrag!!!!!
     
    #5
  6. Angel
    Offline

    Angel Moderator Redakteur

    Registriert seit:
    2. März 2012
    Beiträge:
    1.442
    Ort:
    Niedersachsen
    Minecraft:
    BeatingAngel
    Ich kenne dies von dem Minigame Hide and Seek. Vllt spuckt google ja was aus.

    [LCGTFY]Hide and Seek Minecraft Minigame[/LCGTFY]


    Edit: [YOUTUBE]GlO97JnZ5-g[/YOUTUBE] Ich nehme mal an du suchst sowas. Ich glaub dieses Plugin ist extra von den Besitzern des Servers gescriptet worden. Weshalb es wahrscheinlich schwer ist ein solches Plugin zu finden.
     
    #6
  7. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Ich denke, dann ist es selber programmiert... Ich habe zumindest im Netz nichts gefunden, was diese Funktion hat.
     
    #7
  8. games6471
    Offline

    games6471

    Du kannst der Update-Intervall auch niedriger stellen, dann läuft es flüssiger.

    Außerdem bist du selber Programmierer, dann kannst du es selber programmieren. Du könntest die Idee mit verschiedenen Methoden umsetzen. Hier zwei Ideen von mir, die ich bereits ausgiebig getestet habe. (Mir war in den letzten Tagen sehr langweilig):

    1. Als Erstes hab ich versucht mit ProtocolLib das Paket 0x0B (Player Position) abzufangen und stattdessen ein Paket 0x35 (Block Change) zu senden. Nachdem ich ein paar Erfolge erzielte kam es zwischen drin immer wieder zu Client crashes. Da dieser Client bei jeder Kleinigkeit abstürzt und die Fehlermeldung auch noch obfuscatet ist hab ich einbischen mit JavaDoc gesucht.
    2. Hier hab ich nun die Methode hidePlayer und sendBlockChange benutzt. Dies lief bzw. läuft auf Anhieb problemlos und brauch zudem viel weniger Zeilen Code.
     
    #8
  9. Sn0wBlizz4rd
    Offline

    Sn0wBlizz4rd

    Registriert seit:
    26. September 2012
    Beiträge:
    424
    Minecraft:
    Sn0wBlizz4rd
    Ich glaube ihr versteht mich falsch, ich suche kein Plugin. Und ich meine genau das wie bei Hide n Seek, da ich dieses grade nachprogrammiere.

    @Games
    Danke für den Lösungsansatz, nur weiß ich überhaupt nicht was ich mit sendBlockChange anfangen soll. hidePlayer ist mir bekannt, diese Funktion nutze ich öfters ;)
     
    #9
  10. Angel
    Offline

    Angel Moderator Redakteur

    Registriert seit:
    2. März 2012
    Beiträge:
    1.442
    Ort:
    Niedersachsen
    Minecraft:
    BeatingAngel

    Achso :D Du wolltest wissen wie man dies tut? Also einen Spieler als Block tarnen.. Tut mir leid, habe dich falsch verstanden :)
     
    #10
  11. Chrisliebaer
    Offline

    Chrisliebaer

    Ich hab das jetzt weder probiert, noch nachgeschlagen: Problem Nr 1, dass es zu beheben geht ist, dass Blöcke sich eigentlich nur auf dem Raster bewegen können. Inzwischen gibt es in Minecraft aber die FallingSand-Entity. Ich vermute mal, dass man diese an jede beliebige Stelle platzieren kann. Damit solltest du relativ saubere Bewegungen erhalten. Der Rest ist ein bisschen Packete modifizieren und Abfangen mit ProtocolLib und ein wenig mit der API Spieler ausblenden.

    Aus dem Video, das hier verlinkt wurde, kann ich dir aber schon sagen, dass es sich dabei um ganz normale Blöcke handelt, wie man an dem laufenden Fence, der immer wieder verbunden wird, erkennen kann.

    Und wenn du mit sendBlockUpdate nichts anfangen kannst, dann lies doch einfach mal in der Dokumentation nach.

    Edit: Idee Nr 1 geht nicht: https://forums.bukkit.org/threads/any-idea-how-to-overwride-block-physics.147618/ Aber trozdem ist das Prinzip dahinter ganz einfach.
     
    #11
  12. games6471
    Offline

    games6471

    Wie der Name schon sagt wird mit dieser Methode ein BlockChange Paket an den Spieler gesendet.

    1. Du machst den Spieler unsichtbar
    2. Player bewegt sich um min. einen Block
    3. Du sendest allen möglichen Spielern oder nur Spielern innerhalb einer gewissen Reichweite das Paket, dass an der Stelle des bewegten Spieler sich nun ein Block befindet.
    4. Zusätzlich wird den Spielern noch ein bewegt gesendet, dass der Block, wo sich der bewegte Spieler vorher befand, nun wieder der alte Block befindet. (Meistens Luft, aber da es inzwischen auch Blöcke gibt, wie Schnee, die nicht die Größe eines vollen Blocks haben, müsstest du die alten Blöcke zwischenspeichern.)

    oder du machst es mit den FallingBlock. Dort gibt es zwar das Problem, dass wenn sie in der Luft sind sich immer wieder wie fallende Blöcke verhalten, aber sie laufen wenigstens flüssig und nicht auf dem Raster.
     
    #12