Sign Change Event nach Klick auf das Schilld

  • Guten Abend. Ich würde gerne, nach dem ich ein Schild mit einer speziellen Aufschrift angeklickt habe, dass sich dessen Inhalt ändert:

    Code
    1. public void onInteractwithSign(PlayerInteractEvent e) {
    2. Player p = e.getPlayer();
    3. if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
    4. if(e.getClickedBlock().getState() instanceof Sign) {
    5. Sign s = (Sign) e.getClickedBlock().getState();
    6. if(s.getLine(0).equals("§7[§9Grundstück§7]")) {
    7. if(s.getLine(1).equalsIgnoreCase("")) {
    8. if(s.getLine(2).equalsIgnoreCase("§b150€")) {
    9. if(s.getLine(3).startsWith("gs")) {

    Hier frage ich ab, ob es das Schild iss

    Code
    1. s.setLine(0, "§7[§9Grundstück§7]");
    2. s.setLine(1, "§bBesitzer:");
    3. s.setLine(2, "§3" + p.getName());
    4. s.setLine(3, s.getLine(3));

    Hier sollen die Lines neugesetzt werden. Ich lasse dabei auch Geld von dem User abziehen und das funktioniert.


    Mache ich etwas falsch oder benötige ich das SignChangeEvent und falls ja, wie erfasse ich in diesem Event, dass der User auf das Schild geklickt hat?

    MfG

    Felix

  • An sich ist die erste frage was den nicht funktioniert. Also werden die Zeilen auf dem Schild nicht neugesetzt?


    Falls ja, hast du es mit verschiedenen Schilder probiert, also auf dem Boden oder an einem Block?

  • Es ist egal, ob ich es auf dem Boden oder in der Luft an einem Block habe, es funktioniert nicht.


    Ich habe jetzt nochmal den e.getClickedBlock als Sign definiert, um nicht den State zu haben, aber es funkt immer noch nicht :/

    Code
    1. Sign sign = (Sign) e.getClickedBlock();
    2. sign.setLine(0, "§7[§9Grundstück§7]");
    3. sign.setLine(1, "§bBesitzer:");
    4. sign.setLine(2, "§3" + p.getName());
    5. sign.setLine(3, s.getLine(3));
  • Es ist egal, ob ich es auf dem Boden oder in der Luft an einem Block habe, es funktioniert nicht.


    Ich habe jetzt nochmal den e.getClickedBlock als Sign definiert, um nicht den State zu haben, aber es funkt immer noch nicht :/

    Code
    1. Sign sign = (Sign) e.getClickedBlock();
    2. sign.setLine(0, "§7[§9Grundstück§7]");
    3. sign.setLine(1, "§bBesitzer:");
    4. sign.setLine(2, "§3" + p.getName());
    5. sign.setLine(3, s.getLine(3));

    Ich habe das nun so gemacht:

    Code
    1.                     Sign s = (Sign) e.getClickedBlock().getState();
    2. s.setLine(0, "§7[§9Grundstück§7]");
    3. s.setLine(1, "§bBesitzer:");
    4. s.setLine(2, "§3" + p.getName());
    5. s.setLine(3, s.getLine(3));
    6. s.update();

    So hat es nun funktioniert. Ich habe die ganze Zeit e.getClickedBlock() updaten lassen ohne .getState(); :(