Search in sources :

Example 1 with IDataOnWorldChange

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);
        }
    }
}
Also used : Entry(java.util.Map.Entry) PermissionInfo(fr.neatmonster.nocheatplus.permissions.PermissionInfo) IDataOnWorldChange(fr.neatmonster.nocheatplus.components.data.IDataOnWorldChange) PermissionNode(fr.neatmonster.nocheatplus.permissions.PermissionNode)

Example 2 with IDataOnWorldChange

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);
}
Also used : Player(org.bukkit.entity.Player) IDataOnWorldChange(fr.neatmonster.nocheatplus.components.data.IDataOnWorldChange)

Aggregations

IDataOnWorldChange (fr.neatmonster.nocheatplus.components.data.IDataOnWorldChange)2 PermissionInfo (fr.neatmonster.nocheatplus.permissions.PermissionInfo)1 PermissionNode (fr.neatmonster.nocheatplus.permissions.PermissionNode)1 Entry (java.util.Map.Entry)1 Player (org.bukkit.entity.Player)1