예제 #1
0
  public void run() {

    try {
      if (delay > 0) {
        Thread.sleep(delay);
      }

      // Create a fake note block
      player.sendBlockChange(loc, 25, (byte) 0);
      Thread.sleep(100);

      try {
        sequencer.run(this);
      } catch (Throwable t) {
        t.printStackTrace();
      }

      Thread.sleep(500);

      if (!keepMusicBlock) {
        // Restore music block
        CircuitsPlugin.server
            .getScheduler()
            .scheduleSyncDelayedTask(
                CircuitsPlugin.getInst(),
                new Runnable() {

                  public void run() {

                    int prevId = player.getWorld().getBlockTypeIdAt(loc);
                    byte prevData = player.getWorld().getBlockAt(loc).getData();
                    player.sendBlockChange(loc, prevId, prevData);
                  }
                });
      }
    } catch (InterruptedException e) {
      e.printStackTrace();
    } finally {
      sequencer.stop();
      sequencer = null;
    }
  }
예제 #2
0
  public void stop(boolean keepMusicBlock) {

    this.keepMusicBlock = keepMusicBlock;

    if (sequencer != null) {
      sequencer.stop();
    }

    CircuitsPlugin.server
        .getScheduler()
        .scheduleSyncDelayedTask(
            CircuitsPlugin.getInst(),
            new Runnable() {

              public void run() {

                int prevId = player.getWorld().getBlockTypeIdAt(loc);
                byte prevData = player.getWorld().getBlockAt(loc).getData();
                player.sendBlockChange(loc, prevId, prevData);
              }
            });
  }