InfoNPC

Dieses Thema im Forum "Tutorials" wurde erstellt von [Dev] iTzSasukeHDxLP, 19. August 2014.

  1. [Dev] iTzSasukeHDxLP
    Online

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Hallo Leute,

    heute werde ich euch zeigen, wie ihr NPCs für euren Server programmieren könnt, die essentielle Infos bei einem Klick preisgeben.
    Mir ist klar, dass dies einfacher geht, aber ich möchte den technischen Aspekt erläutern, da es dort viele Möglichkeiten gibt.

    Ihr braucht:
    • Bukkit als Library
    • Citizens als Library
    • Eine IDE eurer Wahl
    Schritt 1:
    Als erstes benötigen wir einen neuen NPC, mit dem wir arbeiten können. Dazu brauchen wir das "Registry" von Citizens, das die NPCs verwaltet.

    Code (Text):
    1. NPCRegistry registry = CitizensAPI.getNPCRegistry();
    Mit dem registry können wir uns einen neuen NPC erstellen, der einen Namen und einen Typ braucht. Wir brauchen also einen EntityType und einen String.

    Code (Text):
    1. EntityType type = EntityType.VILLAGER;
    2. String name = "Bob";
    Mit diesen können wir so:

    Code (Text):
    1. NPC npc = registry.createNPC(type, name);
    einen neuen NPC erschaffen, den wir, an einer beliebigen Location, so spawnen:

    Code (Text):
    1. npc.spawn(loc);
    Wenn man daraus eine Methode bastelt, könnte das ungefähr so aussehen:

    Code (Text):
    1. public void createNPC(EntityType type, String name, Location loc) {
    2.         NPCRegistry registry = CitizensAPI.getNPCRegistry();
    3.         NPC npc = registry.createNPC(type, name);
    4.         npc.spawn(loc);  
    5.     }

    Nun haben wir einen NPC, der absolut nichts kann.
    Citizens bietet allerdings das NPCRightClickEvent, mit dem man beim Klick auf einen NPC weiterarbeiten kann:

    Code (Text):
    1. public void onTouch(NPCRightClickEvent e){
    2.      
    3.      
    4.        
    5.             NPC n = (NPC) e.getNPC();
    6.             String name = n.getName();
    7.     }
    Je nach Name kann man dann weiterarbeiten.

    zB:

    Code (Text):
    1.     public void onTouch(NPCRightClickEvent e){
    2.      
    3.      
    4.        
    5.             NPC n = (NPC) e.getNPC();
    6.             String name = n.getName();
    7.             if(name.equals("Bob")){
    8.                 e.getClicker().setHealth(0);
    9.             }
    10.      }

    Viel Spaß damit!;)
     
    #1
    MiCrJonas gefällt das.
  2. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Das hat mich auf eine Idee gebracht...
    Aber irgendwie gibt es nur einen Schritt in dem ganzen Beitrag :eek:
     
    #2
  3. [Dev] iTzSasukeHDxLP
    Online

    [Dev] iTzSasukeHDxLP Ehem. Teammitglied

    Registriert seit:
    5. Januar 2014
    Beiträge:
    938
    Selbst wenn es so wäre, müsste das keiner wissen.
    Ausserdem habe ich erklärt, wie man einen spawnt und außerdem, wie man ihn beim Klick sprechen lässt.
     
    #3
  4. MiCrJonas
    Offline

    MiCrJonas

    Registriert seit:
    29. Oktober 2012
    Beiträge:
    1.069
    Werden die NPCs eigentlich entfernt, wenn der Server neustartet oder werden die irgendwo gespeichert? Wenn die gespeichert werden, wie entfernt man die dann?
     
    #4