-
-
Notifications
You must be signed in to change notification settings - Fork 30
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
server generates exception, script generates error - scripteventify
- Loading branch information
1 parent
df25b07
commit 899be73
Showing
6 changed files
with
199 additions
and
29 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
98 changes: 98 additions & 0 deletions
98
src/main/java/com/denizenscript/denizencore/events/core/ScriptGeneratesErrorScriptEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
package com.denizenscript.denizencore.events.core; | ||
|
||
import com.denizenscript.denizencore.DenizenCore; | ||
import com.denizenscript.denizencore.events.ScriptEvent; | ||
import com.denizenscript.denizencore.objects.ObjectTag; | ||
import com.denizenscript.denizencore.objects.core.ElementTag; | ||
import com.denizenscript.denizencore.objects.core.QueueTag; | ||
import com.denizenscript.denizencore.objects.core.ScriptTag; | ||
import com.denizenscript.denizencore.scripts.ScriptEntryData; | ||
import com.denizenscript.denizencore.scripts.queues.ScriptQueue; | ||
|
||
public class ScriptGeneratesErrorScriptEvent extends ScriptEvent { | ||
|
||
// <--[event] | ||
// @Events | ||
// script generates error | ||
// | ||
// @Regex ^on script generates error$ | ||
// | ||
// @Group Core | ||
// | ||
// @Cancellable true | ||
// | ||
// @Triggers when a script generates an error. | ||
// @Context | ||
// <context.message> returns the error message. | ||
// <context.queue> returns the queue that caused the error, if any. | ||
// <context.script> returns the script that caused the error, if any. | ||
// <context.line> returns the line number within the script file that caused the error, if any. | ||
// | ||
// --> | ||
|
||
public static ScriptGeneratesErrorScriptEvent instance; | ||
|
||
public ScriptGeneratesErrorScriptEvent() { | ||
instance = this; | ||
} | ||
|
||
public ScriptQueue queue; | ||
public String message; | ||
public int line; | ||
public ScriptTag script; | ||
public static boolean cancelledTracker = false; | ||
|
||
@Override | ||
public ScriptEntryData getScriptEntryData() { | ||
if (queue != null && queue.getLastEntryExecuted() != null) { | ||
return queue.getLastEntryExecuted().entryData; | ||
} | ||
return DenizenCore.getImplementation().getEmptyScriptEntryData(); | ||
} | ||
|
||
@Override | ||
public ObjectTag getContext(String name) { | ||
if (name.equals("message")) { | ||
return new ElementTag(message); | ||
} | ||
else if (name.equals("script")) { | ||
return script; | ||
} | ||
else if (name.equals("line") && line != -1) { | ||
return new ElementTag(line); | ||
} | ||
else if (name.equals("queue") && queue != null) { | ||
return new QueueTag(queue); | ||
} | ||
return super.getContext(name); | ||
} | ||
|
||
@Override | ||
public boolean couldMatch(ScriptPath path) { | ||
if (!path.eventLower.startsWith("script generates error")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
|
||
@Override | ||
public void cancellationChanged() { | ||
cancelledTracker = cancelled; | ||
super.cancellationChanged(); | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "ScriptGeneratesError"; | ||
} | ||
|
||
public boolean handle(String message, ScriptQueue queue, ScriptTag script, int line) { | ||
this.queue = queue; | ||
this.message = message; | ||
this.line = line; | ||
this.script = script; | ||
cancelledTracker = false; | ||
fire(); | ||
return cancelledTracker; | ||
} | ||
} |
94 changes: 94 additions & 0 deletions
94
...n/java/com/denizenscript/denizencore/events/core/ServerGeneratesExceptionScriptEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,94 @@ | ||
package com.denizenscript.denizencore.events.core; | ||
|
||
import com.denizenscript.denizencore.DenizenCore; | ||
import com.denizenscript.denizencore.events.ScriptEvent; | ||
import com.denizenscript.denizencore.objects.ObjectTag; | ||
import com.denizenscript.denizencore.objects.core.ElementTag; | ||
import com.denizenscript.denizencore.objects.core.QueueTag; | ||
import com.denizenscript.denizencore.scripts.ScriptEntryData; | ||
import com.denizenscript.denizencore.scripts.queues.ScriptQueue; | ||
|
||
public class ServerGeneratesExceptionScriptEvent extends ScriptEvent { | ||
|
||
// <--[event] | ||
// @Events | ||
// server generates exception | ||
// | ||
// @Regex ^on server generates exception$ | ||
// | ||
// @Group Core | ||
// | ||
// @Cancellable true | ||
// | ||
// @Triggers when an exception occurs on the server. | ||
// @Context | ||
// <context.message> returns the Exception message. | ||
// <context.full_trace> returns the full exception trace+message output details. | ||
// <context.type> returns the type of the error. (EG, NullPointerException). | ||
// <context.queue> returns the queue that caused the exception, if any. | ||
// --> | ||
|
||
public static ServerGeneratesExceptionScriptEvent instance; | ||
|
||
public ServerGeneratesExceptionScriptEvent() { | ||
instance = this; | ||
} | ||
|
||
public Throwable exception; | ||
public ScriptQueue queue; | ||
public String fullTrace; | ||
public static boolean cancelledTracker = false; | ||
|
||
@Override | ||
public ScriptEntryData getScriptEntryData() { | ||
if (queue != null && queue.getLastEntryExecuted() != null) { | ||
return queue.getLastEntryExecuted().entryData; | ||
} | ||
return DenizenCore.getImplementation().getEmptyScriptEntryData(); | ||
} | ||
|
||
@Override | ||
public ObjectTag getContext(String name) { | ||
if (name.equals("message")) { | ||
return new ElementTag(exception.getMessage()); | ||
} | ||
else if (name.equals("full_trace")) { | ||
return new ElementTag(fullTrace); | ||
} | ||
else if (name.equals("type")) { | ||
return new ElementTag(exception.getClass().getSimpleName()); | ||
} | ||
else if (name.equals("queue") && queue != null) { | ||
return new QueueTag(queue); | ||
} | ||
return super.getContext(name); | ||
} | ||
|
||
@Override | ||
public boolean couldMatch(ScriptPath path) { | ||
if (!path.eventLower.startsWith("server generates exception")) { | ||
return false; | ||
} | ||
return true; | ||
} | ||
|
||
@Override | ||
public void cancellationChanged() { | ||
cancelledTracker = cancelled; | ||
super.cancellationChanged(); | ||
} | ||
|
||
@Override | ||
public String getName() { | ||
return "ServerGeneratesException"; | ||
} | ||
|
||
public boolean handle(Throwable ex, String trace, ScriptQueue queue) { | ||
this.queue = queue; | ||
this.fullTrace = trace; | ||
this.exception = ex; | ||
cancelledTracker = false; | ||
fire(); | ||
return cancelledTracker; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters