Thanks for reporting it, I really appreciate it.
I've uploaded v2.0a with the VisuStella compatibility fix and sprite handling patch.
Let me know if you run into anything else, I'm always happy to help.
Hello! Thank you for taking an interest! I've been working really hard on the Spawner and Boundary System lately :)
Another major update is coming as soon as I finish a few more tasks. I've pushed the Spawner Boundaries to an entirely different level. All documentation has been migrated off of itch over to cleaner github pages documentation which will release with 2.1.
This plugin will continue to see more growth in the near future as I expand other systems I'm sure the need to expand spawning further will likely surface.
Hello! I had to consolidate both plugins into one store, so the old MV store is the new consolidated store for both MV and MZ. If you own the MZ version you should be able to claim it for 100% off on the other store page.
But in the meantime I'll go and upload the updated spawner to the old store page now, which is restricted to those who own it, so it's more accessible during the switch.
Hello! If you've experienced a problem with my plugin this is the correct place to let me know!
Please create a new thread in the Support category and provide as much detailed information as you can including any screenshots of error stacks and a description of what was being done to cause a crash or bug.
I do my best to help resolve issues caused by my plugins.
(This section will be updated soon to include a new method of preloading events into boundary saved data, to allow for much more accurate and predictable spawning of events)

This is the script call to create your boundary, or boundaries.
width = the number of tiles wide your boundary is.
height = the number of tiles high your boundary is.
thickness = the number of tiles thick your boundary is.
name = the "name" of your boundary to be used later when spawning/unspawning on this boundary.
eventId = use 0 if creating a boundary around player, use an eventId if creating a boundary around an event, or use -1 if creating a boundary around an x,y location, and set the x, y location as shown below.
expandBy = the number of tiles the boundary expands its thickness by in the direction of the players movement. This helps increase the odds that events will spawn in front of the player while the player is moving as opposed to the sides and back, helping to ensure that the player has higher odds of encountering enemies in the direction the player is moving.
maxEvents = the number of events the boundary is allowed to spawn, use this to manage the total events on the map to prevent event clutter and performance loss.
centerx = only use centerx if spawning on an x,y location. centerx = the x location of the center of the boundary. leave out of the script call completely if spawning on player or event.
centery = only use centery if spawning on an x,y location. centery = the y location of the center of the boundary. leave out of the script call completely if spawning on player or event.
Example Script calls: Ritter.Boundary.createSpawnerBoundary(11, 11, 1, "spawn", 0, 2, 30)
This would create a boundary of 11 tiles width and height around the game player with 1 thickness which is named "spawn", the boundary will expand by 2 tiles in the direction the player is moving and have a maximum of 30 events it can spawn.
Ritter.Boundary.createSpawnerBoundary(15, 15, 1, "unspawn", 0, 0, 0) This would create a boundary of 15 tiles width and height around the game player with 1 thickness which is named "unspawn", the boundary will not expand in the direction the player is moving and will not be able to spawn any events.
Ritter.Boundary.createSpawnerBoundary(5, 5, 2, "eventBoundary", 50, 0, 5) This would create a boundary of 5 tiles width and height around event 50 with 2 thickness which is named "eventBoundary", the boundary will not expand and is limited to spawning 5 events maximum at a time.
Ritter.Boundary.createBoundary(5, 5, 1, "xyBoundary", -1, 0, 20, 50, 50) This would create a boundary of 5 tiles width and height around coordinates 50,50 on the game map which is named "xyBoundary", the boundary will not expand and is limited to spawning 20 events at a time.

This new Feature allows the developer to abandon manually calling the spawn/unspawn boundaries and instead allows the developer to run them automatically! Simply Create your boundary and add an Auto Handler to it. Then set up your spawn events as explained in the next section. Easily Enable/Disable each Boundary with a plugin command or script call!

This Plugin Command must be placed on the first page of every Event on a Spawn Map which is used for Auto Boundaries. It executes no code and is essentially the same as a Comment.

Initializing a boundary is only required if you wish to Pre-Load all events within a boundary on map load. If your boundary type is "SpawnIn" or "FillIn" this plugin command does not need to be applied.
If you use "SpawnOn" or "FillOn" boundaries you may wish to initialize all nearby saved events so they are loaded when the player loads into the map. To accomplish this simply place this Plugin Command on an AutoRun event that erases itself after running its commands.
This method may be deprecated in the future if I can find a proper spot in MZ code to call this which doesn't crash the game xD
This command turns on a specified boundary. By turning on a boundary it allows the boundary to Spawn or Unspawn events as long as the conditions are met which allow this boundary to Spawn or Unspawn events.
Conditions such as: Player is on proper map. A valid RegionId is within/on a boundary. There are enabled events for a nearby valid tile with.
This command turns off a specified boundary. By turning off a boundary it stops running entirely. It will not spawn or unspawn any more events on any map until it is activated again.
Enabling an event allows the event to be spawned by the Auto Boundary system. If you set an event to be disabled by default and want the event to be later turned on somewhere in your game then this is the command you'll need to call when that spawn event should be enabled. Only Enabled events may be spawned by the auto boundaries.
Disabling an event will make it no longer be spawned by any boundaries. Be advised that any saved events made from this event will still be restored despite being deactivated. No new spawns.

When editing the properties of a Boundary using the Plugin Command leave the properties you wish untouched as 'undefined'. If you set a value for any property that value will be applied. 'undefined' values are ignored.
Please be advised that changing the width/height of unspawn boundaries may cause some boundary events to remain outside of the unspawn boundary. (Unspawn boundary can miss some events if shrunk, leaving events on the map that aren't unspawned. Be careful when resizing Unspawn boundaries)
Param list:
*When using Script Call Use "strings" as param value.*
"width" - sets new width property for the boundary.
"height" - sets new height property for the boundary.
"thickness" - sets new thickness property for the boundary.
"expandby" - sets new expandBy property for the boundary.
"centerx" - sets new centerx property for the boundary.
"centery" - sets new centery property for the boundary.
"maxevents" - sets new maxEvents property for the boundary.
"waittime" - sets new wait time for automatic boundary.
Example script calls:
Ritter.Boundary.editSpawnerBoundary("spawn", "width", 25)
Ritter.Boundary.editSpawnerBoundary("spawn", "height", 17)
These calls would set the width of "spawn" to 25, and the height of "spawn" to 17.
Example Script call using boundary created above: Ritter.spawnEventOnBoundary(4, 8, [15, 16], "spawn")
This would spawn event 8 from map 4 on a random tile marked with regionIds 15 or 16 that pass through the boundary named "spawn".
Example Script call using boundary created above: Ritter.spawnFillOnBoundary(4, 8, [15, 16], "spawn")
This would spawn event 8 from map 4 on every tile marked with regionIds 15 or 16 that are along the edge of the boundary named "spawn".
Example Script call using boundary created above: Ritter.spawnEventInBoundary(4, 8, [15, 16], "spawn")
This would spawn event 8 from map 4 on a random tile marked with regionIds 15 or 16 that is within the boundary named "spawn".
Example Script call using boundary created above: Ritter.spawnFillInBoundary(4, 8, [15, 16], "spawn")
This would spawn event 8 from map 4 on all tiles marked with regionIds 15 or 16 that are within the boundary named "spawn".
Example Script call using boundary created above: Ritter.unspawnEventOnBoundary("unspawn")
This would unspawn any events located on the boundary "unspawn".
Example Script call using boundary created above: Ritter.unspawnEventInBoundary("unspawn")
This would unspawn any events located within the boundary "unspawn".
(Note: This guide will soon be updated to include new boundary type, for now you can read about Auto Boundaries which fire every x frames; based on your set wait time)
Automatic Boundaries takes what was once a complicated task which required you to learn a lot of parameters in script calls and place them inside common events or whatever method you went for and spam the script call with a wait timer. That method is history! (But still works)
Setting up Boundaries, getting them to run, and setting up the events to be spawned on boundaries has been simplified!
Follow the instructions below for quick setup! See the Help Section below this section for further information on plugin commands.
First lets set up an odd-ball boundary. We'll go for a 3x3 Spawn Boundary around the player with a 5x5 Unspawn Boundary around the player. This will make it so as the player moves from tile to tile the player will always be surrounded by events which unspawn as the player moves away from them. Combining boundaries like these with saved boundary events would allow you to do a lot of different things as you can theoretically have an event on every/any valid passable tile, no matter the size of your map.
Lets take a look at the new method of setting up boundaries!
First we Create a Boundary and Add an AutoHandler to it.
Lets start with the 3x3 'FillIn' Boundary:
Now we have a Boundary Named "Player FillIn" that is 3x3 around the player (Event Id 0) which can spawn 11 events. I like to give a little extra room here than a 3x3 requires to ensure proper wiggle room.
Now that we have our Boundary Created lets add an Auto Handler to it! We'll use the Boundary Name we just created above for this plugin command as shown below.
Now our Boundary will run automatically when on maps 3, 4, and 5. The boundary will attempt to spawn an event on every open tile within the 3x3 Boundary every 4 frames and it's enabled by default.
Next lets set up an Unspawn Boundary which can unspawn events on a boundary 1 tile outside of our spawn boundary. So as the player walks the events he/she walks away from will unspawn.
For this we'll go with a 5x5 "UnspawnOn" Boundary around the player.
You may notice Max Events 30 is set, 30 is the default and max events is not used by unspawn boundaries so any value there is fine.
Now lets add our Auto Handler for the 'Player UnspawnOn' Boundary.
Spawn Map Id is not needed here but I typically provide any preloaded spawn map just to be proper.
Before we get into a summary of what we did there's the Unspawn Settings to look into for Auto Handler.
In unspawn settings if the boundary is to be enabled as an Unspawn Boundary just Enable it in the settings then specify target boundaries this unspawn boundary is allowed to unspawn events from. If you spawn events on a boundary named "Player FillIn" then you must include "Player FillIn" on this list for unspawns if you want the boundary to unspawn events from that boundary.
Now we have a boundary which spawns events in a 3x3 boundary around the player named "Player FillIn" and a 5x5 Unspawn Boundary around the player which unspawns any event which was spawned by boundary "Player FillIn" that passes into a tile on the boundary.
Now that we have our boundaries set up it's time to set up events to spawn on the boundary!
Lets go to our spawn map and create an event with the Plugin Command 'BoundaryEventSetup' on its first page.
Now that we have this plugin command on the first page of an event on Spawn Map 2 (The Spawn Map we specified when we created our spawn boundary). Our boundary will be able to see it and spawn it if it's enabled and a valid tile is found.
For more information on this plugin command see the Help Section below.
*Note: This plugin command does not run any code so it will not interfere with your event. This plugin command is parsed by the spawners boundary system code for data. It functions about the same as a Comment*
After you set up your Boundary Events on the Spawn Map you should be good to go.
Simply test your game and run the event which creates the boundaries and adds the auto handlers. If your boundaries are enabled by default, you are on a valid mapId, you have valid RegionIds nearby, and if your events you created are enabled by default, then you should see your events spawning around the player and unspawning as you walk away from them.
Events are visible so you can see what's happening. For a boundary like this you may want them invisible but allow player to interact in some way with them. The sky's the limit!
Ritter Boundary System – Introduction

*Boundaries visualized using the new Ritter_BoundaryVisualizer.js Developer Extension Plugin*
2 Thickness "FillOn" Boundary shown as Green
2 Thickness "UnspawnOn" Boundary shown as Red
Done on screen to demonstrate, this can all be done off screen with larger boundaries.
The Ritter Boundary System allows you to dynamically spawn and unspawn events based on the player’s location, the position of any event, or any point you choose on the map.
Boundaries are created using a simple script call or plugin command and stored under a name you define, allowing you to reference, move, or modify them at any time. You can create as many boundaries as you need, each with its own shape, size, and rules.
A boundary is an invisible zone that your game responds to.
As its anchor moves, the boundary moves with it and automatically handles the spawning and unspawning of events on the tiles it covers.
You can anchor a boundary to:
This gives you fine-grained control over when events are active and when they should be removed from the map.
Since the Boundary System can spawn and unspawn any type of event, it becomes an incredibly flexible tool for creating dynamic, high-performance maps. Common uses include:
Spawning enemies just outside the player’s view for endless combat encounters
Loading NPCs, animals, or gathering nodes only when the player approaches
Adding environmental objects such as debris, interactables, or obstacles on demand
Creating temporary triggers or transfer events
Building “living” maps where only the relevant events exist at any moment
Preload Events into the Boundary Saved Events Database for complete control!
The general principle is simple:
Any event that has no required external references to its eventId can safely be spawned, unspawned, and recycled.
This lets you build large, event-rich maps while keeping performance smooth and stable.

Type: FillOn
Width: 17
Height: 7
Thickness: 1
'Fill On' boundary type will try to spawn an event on every tile which is 'On' the boundary edge. It will check saved event data for the tile and restore any saved events it finds for every tile it checks. It will spawn any events that meet the conditions set during BoundaryEventSetup (if using legacy method). *Thickness extends that edge outward, which will be shown in an example below.

Type: FillIn
Width: 17
Height: 7
Thickness: 1
'Fill In' boundary type will try to spawn an event on every tile which is 'In'/inside the boundary. It will check saved event data for the tile and restore any saved events it finds for every tile it checks. It will spawn any events that meet the conditions set during BoundaryEventSetup (if using legacy method). *Thickness extends that edge outward, which will be shown in an example below.
Type: FillIn
Width: 17
Height: 7
Thickness: 1
'Fill In' boundary type will try to spawn an event on every tile which is 'In'/inside the boundary. It will check saved event data for the tile and restore any saved events it finds for every tile it checks. It will spawn any events that meet the conditions set during BoundaryEventSetup (if using legacy method). *Thickness extends that edge outward, which will be shown in an example below.
To prevent your maps from becoming overloaded, each boundary can be assigned a maximum number of active events.
For example, a boundary set to a limit of 40 will:
Spawn events only until the limit is reached
Automatically unspawn events when they leave the unspawn boundary
Recycle those event slots for new spawns
This ensures:
Predictable and stable performance
No buildup of unused events
Efficient, self-maintaining boundaries
Your event population stays controlled with no extra work from you.
The Boundary System integrates directly with the Ritter Event Spawner, giving you full control over when, where, and how events appear.
With a basic setup, such as a spawn boundary 1–2 tiles outside the player’s screen and an unspawn boundary a few tiles beyond, you can create fully automated event streaming:
Automated boundaries that spawn/unspawn events as the player moves
Persistent events that reappear with their saved data intact
Combined spawn/unspawn boundaries for clean population cycling
Scalable open worlds without needing permanent event clutter
Preloaded events saved into a boundary’s database via x,y or regionId
Every permanent event on the map costs performance, even erased events.
Boundary-based spawning solves this by ensuring that only the events currently needed actually exist on the map.
Instead of having hundreds or thousands of static events, you may only ever have 40, 60, or 100 active at once, regardless of how large or complex your world is.
The Ritter Boundary System brings clean event loading, automatic recycling, dynamic population management, and persistent event behavior into your project with minimal setup.
It unlocks:
Higher performance
Larger maps
More dynamic gameplay
Cleaner event design
A scalable world structure
It’s a powerful system designed to keep your event count to a minimum while allowing your game to feel full of life.
⚠️ Some features shown are for the upcoming 2.1 update. If you don’t see these features in your version, they will be included shortly in the next update.

Ritter.spawnEvent(42, 15, 8, 16, true)
Spawn event 15 from map 42 on the game map at 8,16 coordinates and save the event data to automatically be restored upon re-entering the map, retaining all data.
Ritter.spawnEvent(42, 15, 8, 16)
Spawn event 15 from map 42 on the game map at 8,16 coordinates as a temporary event that goes away on map change.
Ritter.spawnEvent("SpawnMap", "Slime", 8, 16);
Spawn the event named "Slime" from the map named "SpawnMap" onto the game map at 8,16 coordinates as a temporary event that goes away on map change.
If duplicate names are found only the first one will ever be used, avoid duplicating names for spawn maps and spawn template events.
let spawnEvent = Ritter.spawnEvent(42, 15, 8, 16, true, true);
This would store the spawned Game_Event object to the spawnEvent variable.
This allows you to access it's eventId and any other properties immediately after spawning the event.
Learn how to find the event you just spawned using script here!
For Example:
let spawnEvent = Ritter.spawnEvent(42, 15, 8, 16, true, true); let eventId = spawnEvent._eventId; $gameVariables.setValue(1, eventId);

Ritter.spawnEventRegion(4, 8, 15, true)
Spawn event 8 from map 4 on a random tile marked with regionId 15 and save the events data to be automatically restored upon re-entering the map.
Ritter.spawnEventRegion(4, 8, [15,16,23,42])
Spawn event 8 from map 4 on a random tile marked with any of the regionIds 15,16,23,42 as a temporary event that isn't saved.
let spawnEvent = Ritter.spawnEventRegion(42, 15, [8,4], true, true);
This would store the spawned Game_Event object to the spawnEvent variable.
This allows you to access it's eventId and any other properties immediately after spawning the event.
Learn how to find the event you just spawned using script here!
For Example:
let spawnEvent = Ritter.spawnEventRegion(42, 15, [8,4], true, true); let eventId = spawnEvent._eventId; $gameVariables.setValue(1, eventId);

Ritter.spawnEventTerrainTag(4, 8, 2, true)
Spawn event 8 from map 4 on a random tile marked with Terrain Tag 2 and save the events data to be automatically restore upon re-entering the map.
Ritter.spawnEventTerrainTag(4, 8, [1,2,3,4])
Spawn event 8 from map 4 on a random tile marked with any of the Terrain Tags 1,2,3,4 as a temporary event that isn't saved.

Ritter.transformEvent(1010, 4, 8)
Transform event 1010 into event 8 from map 4.

Ritter.unspawnEvent(1000, true)
Unspawn event 1000 from the game map and delete the saved event data.
Ritter.unspawnEvent(1000)
Unspawn event 1000 from the game map.

Ritter.unspawnEvent(15, 16, true)
Unspawn event found at 15, 16 from the game map and delete the saved event data.
Ritter.unspawnEvent(4, 8)
Unspawn event found at 4, 8 from the game map.

Ritter.unspawnAll()
Unspawns all spawned events on the map, which includes both temporary and saved events.
Ritter.unspawnAll(true)
Unspawns all spawned events on the map, and removes saved event data for all spawned events.
Returns the Id of the most recently spawned event. (Obsolete, remains for backward compatibility, use new method linked below to find the event you spawn)

Event recycling is one of the core features that makes the Ultimate Event Spawner fast, scalable, and safe to use even on large, event-dense maps. Instead of continually creating new Game_Event objects, which slowly bloats memory and tanks performance, this spawner reuses events you’ve previously unspawned.
Here’s how it works:
Normally, unspawning an event in RPG Maker means “erase it and forget it.” With recycling enabled, the system does something smarter:
Game_Event instance is moved off-map to (-1, -1)
_unspawnList)
At this stage, the event is no longer active, visible, or interactable, but the actual Game_Event object remains available for reuse inside the pool.
Instead of generating a brand-new event object:
Game_Event is created normally
This means your project rarely creates new events at runtime. Most of the time, it's simply reassigning existing, inactive ones.
Because events are reused instead of repeatedly constructed and destroyed:
This is how I've been able to spawn and unspawn tens of millions of events while stress testing the spawner without ever leaving the map with absolutely no performance loss over time.
Event recycling makes this spawner ideal for:
Instead of worrying about events stacking up over time, you get a predictable, stable system that performs the same at 2 hours of gameplay as it did at 2 minutes.
If you need to know the eventId, or access the event you just spawned in other ways, it's as simple as following these steps.
When spawning an event use the following script:

(To be clear, the let ev = Ritter.spawnEvent(...); line is what spawns the event onto the game map, it also lets you access it directly using the ev variable)
The code above would spawn the event as well as store the Game_Event ($gameMap.event) object it created to a variable, so it allows you to access the Game_Event using the variable you just created when spawning the event. So you can follow up like this:

You can do a lot more than just access the eventId, you have the whole Game_Event object you just spawned available to you.
This same trick works with other spawner API commands too, like spawnEventRegion. The intent is to render the $gameMap._lastSpawnEventId flag obsolete, this is much more reliable.
I hope this makes things easier for all of you!




Oh that's interesting. I'm glad you found something that works. I'm curious though what the difference is between the two filenames if that did fix the problem. Could you show me the filenames and maybe a screenshot or two of your plugin parameters? That might help narrow down why you hit that problem and prevent others from hitting the same problem.
In the meantime I'll continue to try to get the plugin to fail where you had problems, but so far I've still had no luck. Whenever I deploy my test projects the deployed version works no problem. I've had some ideas of what could be causing the problem but being able to get it to fail and crash in the first place has been unproductive so far.
Just to make sure I understand you correctly, after the pre-title video plays and it transitions to the title screen there's a fade in from black as the title screen loads and you want that fade in disabled so it appears instantly?
That fade in is actually RPG Makers work. You can see this yourself; If you turn off the Title Movie Plugin in the plugin manager and playtest your game it should fade in from black when the title screen loads.
I could whip up a little plugin which disables the fade in entirely and lets the title screen just instantly appear after the pre-title video(s) plays. It may not be as smooth of a transition as you're hoping for because there is still a Scene Change which happens between the Pre-Title Movie Scene and the Title Screen Scene.
I take it you're looking for something where your game will transition smoothly from a Pre-Title Video into the title screen seamlessly?
Hello, do you happen to have any more information on how this is happening for some users? Is it a specific build they're using? Any additional information might help diagnose the issue. So far I'm having no luck on finding why it's happening for some of your players and I'm still completely unable to replicate the issue. I have some ideas to try but it would basically overhaul the entire process that's been in place for playing pre-title movies, which may yield positive results but finding why it's happening and fixing it is ideal.
Hello, this plugin isn't abandoned I've just been rather busy lately and this issue slipped my mind. Sorry about the delay I'll take a look into this asap and find a solution. I remember not being able to replicate the problem which makes it a bit more challenging to deal with but I'll take a closer look. Once again sorry about the delay on this issue I'll hopefully have it fixed very soon.
I haven't found a way to replicate this error yet, do you know how to get it to occur? I do see in the code how this *could* happen but it would be best if I could see it happen myself. I'll be releasing an update for testing purposes soon, once I nail down and am satisfied with the logic applied to prevent this kind of issue from occurring. I'd rather not blindly apply a patch that I assume should work and have an event where the video playback doesn't function properly when this issue would occur.
Hello, I haven't forgotten about this issue! One thing that I've noticed while doing some testing now that I finally have some time (I've been very busy lately sorry about that) is that the sound from the title screen background videos continues to play when I continue a saved game but if I start a new game the sound will stop as expected.
Is this what you're experiencing or are you also experiencing the sound playing on a new game as well? I'm going to release a patch soon to fix the continue game bug but I'm unable to replicate the issue of having the background videos audio playing when starting a new game only when loading a saved game.
If it's only when continuing a saved game then this will be patched soon (later tonight), if it's also occurring when you start a new game then I might need more information so I can replicate the issue in order to fix it.
Edit:
So I've got the load save bug fixed, it no longer plays the video improperly after loading a saved game, I'm taking a look into another issue which you also commented on below before uploading a new version of the plugin. Let me know if this issue only happens when loading a saved game or if you're somehow seeing it on a new game as well because that would require a fix as well.
Hello, sorry to hear you're having this issue! So I understand correctly, the title screen background music is playing after starting a new game? Or is it music from a background video that can be heard playing after starting a new game? I'll take a look into this and do some tests but I've never seen this happen before. If you're using any other title screen plugins it would help to know which ones, thank you.
Hello! Sorry it took a few days to get back to you on this. I took a look into this and immediately encountered the same crash, I'm not 100% certain on what exactly caused this to start happening now but I did fix it. I've uploaded version 1.6 which should fix this issue.
Apparently the plugin was trying to access Boundary System logic and there was no definition for Ritter.Boundary object, so simply creating the Ritter.Boundary object ( Ritter.Boundary = Ritter.Boundary || {}; ) appears to have fixed the issue.
Let me know how it goes, or if you run into any other issues.
Thank you and good luck with your game project!
So the issue you're experiencing is that the plugin isn't finding the tile data which tells me that it could be something wrong with configuration, it's odd that it doesn't work in the demo though.
Ensure you have configured the "Tile Map Name Tag" properly
And also be sure to have the tag set in the map name where the tile data is stored:
If this is misconfigured then the tile data won't be loaded resulting in the exact error you're seeing. When your game launches the plugin will look through all map names and load tile data from maps which are marked with this tag.
If this isn't the issue then I'm not entirely sure what's causing your issue yet, it's just odd that the demo isn't working for you, unless you're trying to do something unintended within the demo. I've updated the demo core scripts myself and also tested in a fresh project using 1.8.1 and have seen no issues.
If the demo crashes for you after updating core scripts when exactly does it crash? Are you calling something manually or does it crash as you play through the demo? Does the demo crash without updating the core scripts?
I'll provide a few screenshots of a simple test in a fresh project:
Event I have placed on Map 1
Screenshot showing what my Map 2 looks like and it's name including the ** tag
Gif showing the simple map transform to dark grass.
Corescript version of this project is 1.8.1

If none of this helps then I'll need more screen shots to understand what's going wrong, if you're trying to call use prefab manually and seeing this error I'd double check that the above requirements are met and if there's still issues perhaps some more screenshots of what you've set up in your test project would help pinpoint the issue.
Hello, I'm sorry you're experiencing issues with this plugin but it does actually work with 1.8.1, could you provide more information on what you've tried. It's possible there is a conflict with another plugin or just incorrect setup. Have you tried using the demo and updating the corescript of the demo?