use of fr.neatmonster.nocheatplus.components.data.IDataOnWorldChange in project NoCheatPlus by NoCheatPlus.
the class PlayerData method onPlayerChangedWorld.
/**
* Early adaption on world change.
*
* @param oldWorld
* @param newWorld
* @param types
*/
void onPlayerChangedWorld(final Player player, final World oldWorld, final World newWorld, final WorldDataManager worldDataManager, final Collection<Class<? extends IDataOnWorldChange>> types) {
updateCurrentWorld(newWorld, worldDataManager);
// TODO: Double-invalidation (previous policy and target world policy)
final Iterator<Entry<Integer, PermissionNode>> it = permissions.iterator();
// TODO: More efficient: get unmodifiable collection from registry?
while (it.hasNext()) {
final PermissionNode node = it.next().getValue();
final PermissionInfo info = node.getPermissionInfo();
if (info.invalidationWorld()) {
node.invalidate();
}
}
requestLazyPermissionUpdate(permissionRegistry.getPreferKeepUpdatedWorld());
for (final Class<? extends IDataOnWorldChange> type : types) {
final IDataOnWorldChange instance = dataCache.get(type);
if (instance != null && instance.dataOnWorldChange(player, this, oldWorld, newWorld)) {
dataCache.remove(type);
}
}
}
use of fr.neatmonster.nocheatplus.components.data.IDataOnWorldChange in project NoCheatPlus by NoCheatPlus.
the class PlayerDataManager method playerChangedWorld.
private void playerChangedWorld(final PlayerChangedWorldEvent event) {
final Player player = event.getPlayer();
final PlayerData pData = getPlayerData(player, true);
final Collection<Class<? extends IDataOnWorldChange>> types = factoryRegistry.getGroupedTypes(IDataOnWorldChange.class);
pData.onPlayerChangedWorld(player, event.getFrom(), player.getWorld(), worldDataManager, types);
}
Aggregations