Skip to content

Commit

Permalink
server generates exception, script generates error - scripteventify
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Nov 15, 2020
1 parent df25b07 commit 899be73
Show file tree
Hide file tree
Showing 6 changed files with 199 additions and 29 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -125,10 +125,6 @@ public static List<String> trimEvents(List<String> original) {
return parsed;
}

public static boolean eventExists(String original) {
return events.containsKey("ON " + original.toUpperCase());
}

public static List<String> addAlternates(List<String> events) {

// Strip object identifiers from world event names and add the results
Expand Down Expand Up @@ -165,15 +161,6 @@ public static List<String> addAlternates(List<String> events) {
return finalEvents;
}

public static String StripIdentifiers(String original) {
if (original.matches(".*?[a-z]+@[\\w ]+")) {
return original.replaceAll("[a-z]+@", "");
}
else {
return original;
}
}

///////////////////
// MECHANICS
///////////////
Expand Down Expand Up @@ -254,15 +241,4 @@ public ObjectTag getContext(String name) {
return contexts.get(name);
}
}

////////////////////
// REGISTRATION
//////////////

public static void registerSmartEvent(OldSmartEvent event) {
// Seems simple enough
if (event != null) {
smart_events.add(event);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,8 @@ public static void registerCoreEvents() {
registerScriptEvent(new DeltaTimeScriptEvent());
registerScriptEvent(new PreScriptReloadScriptEvent());
registerScriptEvent(new ReloadScriptsScriptEvent());
registerScriptEvent(new ScriptGeneratesErrorScriptEvent());
registerScriptEvent(new ServerGeneratesExceptionScriptEvent());
registerScriptEvent(new SystemTimeScriptEvent());
registerScriptEvent(new TickScriptEvent());
}
Expand Down
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;
}
}
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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -89,19 +89,19 @@ public void parseArgs(ScriptEntry scriptEntry) throws InvalidArgumentsException
&& arg.matchesEnum(DBINFO)) {
scriptEntry.addObject("type", arg.asElement());
}
else if (!scriptEntry.hasObject("debug")) {
scriptEntry.addObject("debug", new ElementTag(arg.getRawValue()));
}
else if (!scriptEntry.hasObject("name")
&& arg.matchesPrefix("name")) {
scriptEntry.addObject("name", arg.asElement());
}
else if (!scriptEntry.hasObject("debug")) {
scriptEntry.addObject("debug", new ElementTag(arg.getRawValue()));
}
else {
arg.reportUnhandled();
}
}
if (!scriptEntry.hasObject("type") || !scriptEntry.hasObject("debug")) {
throw new InvalidArgumentsException("Must specify a definition and value!");
throw new InvalidArgumentsException("Must specify a debug type and message!");
}
scriptEntry.defaultObject("name", new ElementTag("name"));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ public class QueueWordList {
+ "Packing Rejected Shelter Chapel Gamespot Manufacture Layers Wordpress Guided Vulnerability Accountability Celebrate Accredited Appliance Compressed Bahamas Powell Mixture Bench Univ Tub Rider Scheduling Radius Perspectives Mortality Logging Hampton Borders Therapeutic Pads Inns Bobby Impressive Sheep Accordingly Architect Railroad Lectures Challenging Nursery Harder Cups Ash Microwave Cheapest Accidents Travesti Relocation Stuart Contributors Salvador Ali Salad Np Monroe Tender Violations Foam Temperatures Paste Clouds Competitions Discretion Tft Tanzania Preserve Jvc Poem Unsigned Staying Cosmetics Easter Theories Repository Praise Jeremy Venice Jo Concentrations Estonia Veteran Streams Landing Signing Executed Katie Negotiations Realistic Dt Cgi Showcase Integral Asks Relax Namibia Generating Christina Congressional Synopsis Hardly Prairie Reunion Composer Bean Sword Absent Photographic Sells Ecuador Hoping Accessed Spirits Modifications Coral Pixel Float Colin Bias Imported Paths Bubble Por Acquire Contrary Millennium Tribune Vessel Acids Focusing Viruses Cheaper Admitted Dairy Admit Mem Fancy Equality Samoa Gc Achieving Tap Stickers Fisheries "
+ "Exceptions Reactions Leasing Lauren Beliefs Ci Macromedia Companion Squad Analyze Ashley Scroll Relate Divisions Swim Wages Additionally Suffer Forests Fellowship Nano Invalid Concerts Martial Victorian Retain Colours Execute Tunnel Genres Cambodia Patents Copyrights Yn Chaos Lithuania Mastercard Wheat Chronicles Obtaining Beaver Updating Distribute Readings Decorative Confused Compiler Eagles Bases Vii Accused Bee Campaigns Unity Loud Conjunction Bride Rats Defines Airports Instances Indigenous Begun Cfr Packets Anchor Socks Validation Parade Corruption Stat Trigger Incentives Cholesterol Gathered Essex Slovenia Notified Differential Beaches Folders Dramatic Surfaces Terrible Routers Cruz Pendant Dresses Baptist Scientist Starsmerchant Hiring Clocks Arthritis Bios Wallace Nevertheless Reflects Taxation Fever Pmc Cuisine Surely Practitioners Transcript Myspace Theorem Inflation Thee Nb Ruth Pray Stylus Compounds Drums Contracting Arnold Structured Reasonably Jeep Cattle Mba Radical Graduates Rover Recommends Controlling Treasure Reload Distributors Flame Tanks Assuming Monetary Elderly Pit Arlington Mono Particles Floating Extraordinary Tile Indicating Bolivia Spell "
+ "Stevens Coordinate Kuwait Exclusively Emily Alleged Limitation Widescreen Compile Webster Struck Rx Illustration Plymouth Warnings Construct Apps Inquiries Bridal Annex Mag Gsm Inspiration Tribal Curious Affecting Freight Rebate Meetup Eclipse Sudan Ddr Downloading Rec Shuttle Aggregate Stunning Cycles Affects Forecasts Detect Actively Ciao Ampland Knee Prep Pb Complicated Chem Fastest Butler Shopzilla Injured Decorating Payroll Cookbook Expressions Ton Courier Uploaded Shakespeare Hints Collapse Americas Connectors Unlikely Oe Gif Pros Conflicts Techno Beverage Tribute Wired Elvis Immune Travelers Forestry Barriers Cant Jd Rarely Gpl Infected Offerings Martha Genesis Barrier Argue Incorrect Trains Metals Bicycle Furnishings Letting Arise Guatemala Celtic Thereby Irc Jamie Particle Perception Minerals Advise Humidity Bottles Boxing Wy Dm Bangkok Renaissance Pathology Sara Ordinance Hughes Photographers Infections Jeffrey Chess Operates Brisbane Configured Survive Oscar Festivals Menus Joan Possibilities Duck Reveal Canal Amino Phi Contributing Herbs Clinics Mls Cow Manitoba Analytical "
+ "Missions Watson Lying Costumes Strict Dive Circulation Drill Offense Bryan Cet Protest Assumption Jerusalem Hobby Tries Invention Nickname Fiji Technician Inline Executives Enquiries Washing Audi Staffing Cognitive Exploring Trick Enquiry Closure Raid Ppc Timber Volt Intense Div Playlist Registrar Showers Supporters Ruling Steady Dirt Statutes Withdrawal Myers Drops Predicted Wider Saskatchewan Jc Cancellation Plugins Enrolled Sensors Ministers Publicly Hourly Blame Geneva Freebsd Veterinary Acer Prostores Reseller Dist Handed Suffered Intake Informal Relevance Incentive Butterfly Tucson Mechanics Heavily Swingers Fifty Headers Mistakes Numerical Ons Geek Uncle Defining Xnxx Counting Reflection Sink Accompanied Assure Invitation Devoted Princeton Jacob Sodium Randy Spirituality Hormone Meanwhile Proprietary Timothy Brick Grip Naval Thumbzilla Medieval Porcelain Avi Bridges Pichunter Captured Watt Thehun Decent Casting Dayton Translated Shortly Cameron Columnists Pins Carlos Reno Donna Andreas Warrior Diploma Cabin Innocent Scanning Ide Consensus Polo Copying Rpg "
+ "Missions Watson Lying Costumes Strict Dive Circulation Drill Offense Bryan Cet Protest Assumption Jerusalem Hobby Tries Invention Nickname Fiji Technician Inline Executives Enquiries Washing Audi Staffing Cognitive Exploring Trick Enquiry Closure Raid Ppc Timber Volt Intense Div Playlist Registrar Showers Supporters Ruling Steady Dirt Statutes Withdrawal Myers Drops Predicted Wider Saskatchewan Jc Cancellation Plugins Enrolled Sensors Ministers Publicly Hourly Blame Geneva Freebsd Veterinary Acer Prostores Reseller Dist Handed Suffered Intake Informal Relevance Incentive Butterfly Tucson Mechanics Heavily Swingers Fifty Headers Mistakes Numerical Ons Geek Uncle Defining Counting Reflection Sink Accompanied Assure Invitation Devoted Princeton Jacob Sodium Randy Spirituality Hormone Meanwhile Proprietary Timothy Brick Grip Naval Thumbzilla Medieval Porcelain Avi Bridges Pichunter Captured Watt Thehun Decent Casting Dayton Translated Shortly Cameron Columnists Pins Carlos Reno Donna Andreas Warrior Diploma Cabin Innocent Scanning Ide Consensus Polo Copying Rpg "
+ "Delivering Cordless Patricia Horn Eddie Uganda Fired Journalism Pd Prot Trivia Adidas Perth Frog Grammar Intention Disagree Klein Harvey Tires Logs Undertaken Tgp Hazard Retro Leo Statewide Semiconductor Gregory Episodes Boolean Circular Anger Diy Mainland Illustrations Suits Chances Interact Snap Happiness Arg Substantially Bizarre Glenn Ur Auckland Olympics Fruits Identifier Geo Ribbon Calculations Doe Jpeg Conducting Startup Suzuki Trinidad Ati Wal Handy Swap Exempt Crops Reduces Accomplished Calculators Geometry Impression Abs Slovakia Flip Guild Correlation Gorgeous Capitol Sim Dishes Rna Barbados Chrysler Nervous Refuse Extends Fragrance Mcdonald Replica Plumbing Brussels Tribe Neighbors Trades Superb Buzz Transparent Rid Trinity Charleston Handled Legends Boom Calm Champions Floors Selections Projectors Inappropriate Exhaust Comparing Shanghai Speaks Burton Vocational Davidson Copied Scotia Farming Gibson Pharmacies Fork Troy Ln Roller Introducing Batch Organize Appreciated Alter Nicole Ghana Edges Uc Mixing Handles Skilled Fitted Albuquerque Harmony Distinguished Asthma Projected Assumptions Shareholders Developmental Rip Zope Regulated Triangle Amend Anticipated Reward "
+ "Windsor Zambia Completing Gmbh Buf Ld Hydrogen Sprint Comparable Advocate Sims Confusion Copyrighted Tray Inputs Warranties Genome Escorts Documented Medal Paperbacks Coaches Vessels Harbour Walks Sol Keyboards Sage Knives Eco Vulnerable Arrange Artistic Bat Honors Booth Indie Reflected Unified Bones Breed Detector Ignored Polar Fallen Precise Sussex Respiratory Notifications Msgid Mainstream Invoice Evaluating Subcommittee Sap Gather Suse Backed Alfred Colonial Carey Motels Forming Embassy Cave Journalists Danny Rebecca Slight Proceeds Indirect Amongst Wool Foundations Msgstr Arrest Volleyball Mw Adipex Horizon Nu Deeply Toolbox Ict Marina Liabilities Prizes Bosnia Browsers Decreased Patio Dp Tolerance Surfing Creativity Lloyd Describing Optics Pursue Lightning Overcome Eyed Ou Quotations Grab Inspector Brighton Beans Bookmarks Ellis Disable Snake Succeed Leonard Lending Oops Reminder Xi Searched Behavioral Riverside Bathrooms Plains Sku Ht Raymond Insights Abilities Initiated Sullivan Za Midwest Karaoke Ve Nonprofit Lancaster Suspended Hereby Observe Julia Containers Attitudes Karl Berry Collar Simultaneously Racial Integrate Bermuda Amanda Sociology Mobiles Screenshot Exhibitions "
+ "Kelkoo Confident Retrieved Exhibits Officially Consortium Terrace Bacteria Pts Replied Seafood Novels Rh Rrp Recipients Playboy Ought Delicious Traditions Fg Safely Finite Kidney Periodically Fixes Sends Durable Mazda Allied Throws Moisture Hungarian Roster Referring Symantec Spencer Wichita Nasdaq Uruguay Ooo Hz Transform Timer Tablets Tuning Gotten Educators Tyler Futures Vegetable Verse Highs Humanities Independently Wanting Custody Scratch Launches Ipaq Alignment Henderson Bk Britannica Comm Ellen Competitors Nhs Rocket Aye Bullet Towers Racks Lace Visibility Latitude Consciousness Ste Deposits Beverly Mistress Encounter Trustees Watts Duncan Reprints Hart Bernard Resolutions Ment Accessing Forty Tubes Attempted Col Midlands Priest Floyd Ronald Analysts Queue Dx Sk Trance Locale Nicholas Biol Yu Bundle Hammer Invasion Witnesses Runner Rows Administered Notion Sq Skins Mailed Oc Fujitsu Spelling Arctic Exams Rewards Beneath Strengthen Defend Aj Frederick Medicaid Treo Infrared Seventh Une Welsh Belly Tex Advertisements Quarters Stolen Cia Sublimedirectory Soonest Haiti Disturbed Determines Sculpture Poly Ears Dod Wp Fist Naturals Neo Motivation Lenders Pharmacology Fitting Fixtures Bloggers "
Expand Down

0 comments on commit 899be73

Please sign in to comment.