[Scarpet] Added ability to cancel events (#1497)
* Added ability to cancel events * Made more events cancellable * Added event_priority to __config * Check for string values for performance * Made player_finishes_using_item cancellable * Made player_chooses_recipe cancellable * Made player_swaps_hands cancellable * Made player_message cancellable * Added __on_player_placing_block (#1498) * Added event to docs, keywords, event_test * Added docs for event cancellation
This commit is contained in:
1 parent
4bb4b557e5
commit
24b9c386ec
14 files changed
+243
-99
No files matched your search
@@ -48,21 +48,22 @@ public class GlocalFlag extends ThreadLocal<Boolean>
|
||||
return result;
|
||||
}
|
||||
|
||||
public boolean runIfEnabled(Runnable action)
|
||||
public <T> T runIfEnabled(Supplier<T> action)
|
||||
{
|
||||
synchronized (this)
|
||||
{
|
||||
if (get() != initial) return false;
|
||||
if (get() != initial) return null;
|
||||
set(!initial);
|
||||
}
|
||||
T result;
|
||||
try
|
||||
{
|
||||
action.run();
|
||||
result = action.get();
|
||||
}
|
||||
finally
|
||||
{
|
||||
set(initial);
|
||||
}
|
||||
return true;
|
||||
return result;
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user