Adapt to the new SPELL spawn reason.
This new spawn reason was introduced somewhere between 1.18 and 1.18.1, and unfortunately it is a breaking change, so we have to employ it for MobArena to properly allow and register vexes (again...), but we also have to maintain a variation of the old logic so we don't break support for older server versions. Fixes #719
This commit is contained in:
@@ -393,15 +393,23 @@ public class ArenaListener
|
||||
* reason means MobArena didn't trigger the event. However, we
|
||||
* make an exception for certain mobs that spawn as results of
|
||||
* other entities spawning them, e.g. when Evokers summon Vexes.
|
||||
* Note that the "spell" reason was introduced somewhere between
|
||||
* 1.18 and 1.18.1, so "default" is kept only for compatibility
|
||||
* with older server versions. Also note the use of `switch` as
|
||||
* a workaround for the NoSuchFieldError that would occur if we
|
||||
* used a simple equality check.
|
||||
*/
|
||||
if (reason == SpawnReason.DEFAULT) {
|
||||
if (event.getEntityType() == EntityType.VEX) {
|
||||
event.setCancelled(false);
|
||||
monsters.addMonster(event.getEntity());
|
||||
} else {
|
||||
event.setCancelled(true);
|
||||
switch (reason) {
|
||||
case DEFAULT:
|
||||
case SPELL: {
|
||||
if (event.getEntityType() == EntityType.VEX) {
|
||||
event.setCancelled(false);
|
||||
monsters.addMonster(event.getEntity());
|
||||
} else {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
return;
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
// If not custom, we probably don't want it, so get rid of it
|
||||
|
||||
Reference in New Issue
Block a user