public void playerMoveEvent(PlayerMoveEvent event) {
if (event.getFrom().getBlock().equals(event.getTo().getBlock())) return;
// Compare the two biomes
Biome from = event.getFrom().getWorld().getBiome(event.getFrom().getBlockX(), event.getFrom().getBlockZ());
Biome to = event.getTo().getWorld().getBiome(event.getTo().getBlockX(), event.getTo().getBlockZ());
if (!from.equals(to)) {
// Create contexts
Map<String, dObject> context = new HashMap<String, dObject>();
context.put("from", new dLocation(event.getFrom()));
context.put("to", new dLocation(event.getFrom()));
context.put("old_biome", new Element(from.name()));
context.put("new_biome", new Element(to.name()));
String determination = EventManager.doEvents(Arrays.asList(
"player enters biome", "player exits biome",
"player enters " + to.name(), "player exits " + from.name()
), null, new dPlayer(event.getPlayer()), context, true);
if (determination.toUpperCase().startsWith("CANCELLED"))
event.setCancelled(true);
}