Advertisement
DPOH-VAR

Select.vs

Aug 6th, 2013
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.16 KB | None | 0 0
  1. ## по умолчанию 10 секунд на выбор
  2. 10.0 %%delay
  3. ## геттер для таймаута
  4. $getTimeout{
  5.     @delay
  6. }
  7. ## сеттер для таймаута
  8. $setTimeout{
  9.     <Double> %delay
  10. }
  11.  
  12. ## выбор блока
  13. $block{
  14.     THREAD %%main
  15.     NULL %%selected
  16.  
  17.     ## поток-будильщик. Разбудит основной поток через @delay секунд
  18.     Awaker{
  19.         @delay WAIT
  20.         @main WAKEUP
  21.     } START %%awaker ## запустили поток
  22.  
  23.     ## поток-хандлер. при событии выбирает блок и будит основной поток
  24.     Listener{
  25.         ## если кликнул не ME - пропускаем событие.
  26.         @Event:getPlayer ME = !IF RETURN THEN
  27.         ## если не правой кнопкой - пропускаем событие.
  28.         @Event:getAction "RIGHT_CLICK_BLOCK" = !IF RETURN THEN
  29.         ## отменяем событие
  30.         TRUE @Event:setCancelled
  31.         ## записываем блок в переменную
  32.         @Event:getClickedBlock %selected
  33.         ## и будим основной поток
  34.         @main WAKEUP
  35.     } "PlayerInteractEvent" REGISTER DROP ## слушаем событие
  36.  
  37.     ## тут основной поток засыпает
  38.     SLEEP
  39.     ## как только его разбудили
  40.     ## если поток @awaker не завершился - завершаем его
  41.     @awaker IF
  42.         @awaker STOP
  43.     THEN
  44.     ## возвращаем @selected
  45.     @selected
  46. }
  47.  
  48.  
  49. ## выбор ентити
  50. $entity{
  51.     THREAD %%main
  52.     NULL %%selected
  53.     Awaker{
  54.         @delay WAIT
  55.         @main WAKEUP
  56.     } START %%awaker
  57.  
  58.     Listener{
  59.         @Event:getPlayer ME = !IF RETURN THEN
  60.         TRUE @Event:setCancelled
  61.         @Event:getRightClicked %selected
  62.         @main WAKEUP
  63.     } "PlayerInteractEntityEvent" REGISTER DROP
  64.  
  65.     SLEEP
  66.  
  67.     @awaker IF
  68.         @awaker STOP
  69.     THEN
  70.     @selected
  71. }
  72.  
  73. $b{THIS:block} ## алиас
  74. $e{THIS:entity} ## алиас
  75.  
  76. THIS.block RUNTIME.>sb ## алиас
  77. THIS.entity RUNTIME.>se ## алиас
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement