Events rewrite, remove most deprecated API methods (v3.0)
This commit is contained in:
@@ -22,13 +22,10 @@
|
||||
|
||||
package me.lucko.luckperms.common.api;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
|
||||
import com.google.common.eventbus.EventBus;
|
||||
|
||||
import me.lucko.luckperms.api.Contexts;
|
||||
import me.lucko.luckperms.api.Datastore;
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.LPConfiguration;
|
||||
import me.lucko.luckperms.api.Logger;
|
||||
@@ -41,21 +38,14 @@ import me.lucko.luckperms.api.Storage;
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.UuidCache;
|
||||
import me.lucko.luckperms.api.context.ContextListener;
|
||||
import me.lucko.luckperms.api.context.ContextCalculator;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.api.context.IContextCalculator;
|
||||
import me.lucko.luckperms.api.event.LPEvent;
|
||||
import me.lucko.luckperms.api.event.LPListener;
|
||||
import me.lucko.luckperms.common.api.delegate.DatastoreDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.GroupDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.LPConfigurationDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.NodeFactoryDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.StorageDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.TrackDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.UserDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.UuidCacheDelegate;
|
||||
import me.lucko.luckperms.common.api.delegates.NodeFactoryDelegate;
|
||||
import me.lucko.luckperms.common.api.delegates.UserDelegate;
|
||||
import me.lucko.luckperms.common.core.NodeBuilder;
|
||||
import me.lucko.luckperms.common.core.UserIdentifier;
|
||||
import me.lucko.luckperms.common.event.EventFactory;
|
||||
import me.lucko.luckperms.common.event.LuckPermsEventBus;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -66,23 +56,19 @@ import java.util.stream.Collectors;
|
||||
/**
|
||||
* Implements the LuckPerms API using the plugin instance
|
||||
*/
|
||||
@AllArgsConstructor
|
||||
public class ApiProvider implements LuckPermsApi {
|
||||
private final LuckPermsPlugin plugin;
|
||||
private final EventBus eventBus = new EventBus("LuckPerms");
|
||||
|
||||
public void fireEventAsync(LPEvent event) {
|
||||
plugin.doAsync(() -> fireEvent(event));
|
||||
}
|
||||
@Getter
|
||||
private final LuckPermsEventBus eventBus;
|
||||
|
||||
public void fireEvent(LPEvent event) {
|
||||
try {
|
||||
event.setApi(this);
|
||||
eventBus.post(event);
|
||||
} catch (Exception e) {
|
||||
getLogger().severe("Couldn't fire LuckPerms Event: " + event.getEventName());
|
||||
e.printStackTrace();
|
||||
}
|
||||
@Getter
|
||||
private final EventFactory eventFactory;
|
||||
|
||||
public ApiProvider(LuckPermsPlugin plugin) {
|
||||
this.plugin = plugin;
|
||||
this.eventBus = new LuckPermsEventBus(plugin);
|
||||
this.eventFactory = new EventFactory(eventBus);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -92,7 +78,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
|
||||
@Override
|
||||
public double getApiVersion() {
|
||||
return 2.17;
|
||||
return 3.0;
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -105,30 +91,14 @@ public class ApiProvider implements LuckPermsApi {
|
||||
return plugin.getServerType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void registerListener(@NonNull LPListener listener) {
|
||||
eventBus.register(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unregisterListener(@NonNull LPListener listener) {
|
||||
eventBus.unregister(listener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public LPConfiguration getConfiguration() {
|
||||
return new LPConfigurationDelegate(plugin.getConfiguration());
|
||||
return plugin.getConfiguration().getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Storage getStorage() {
|
||||
return new StorageDelegate(plugin, plugin.getStorage());
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Datastore getDatastore() {
|
||||
return new DatastoreDelegate(plugin, plugin.getStorage());
|
||||
return plugin.getStorage().getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -138,7 +108,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
|
||||
@Override
|
||||
public UuidCache getUuidCache() {
|
||||
return new UuidCacheDelegate(plugin.getUuidCache());
|
||||
return plugin.getUuidCache().getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -149,7 +119,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
@Override
|
||||
public User getUser(@NonNull UUID uuid) {
|
||||
final me.lucko.luckperms.common.core.model.User user = plugin.getUserManager().get(uuid);
|
||||
return user == null ? null : new UserDelegate(user);
|
||||
return user == null ? null : user.getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -160,7 +130,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
@Override
|
||||
public User getUser(@NonNull String name) {
|
||||
final me.lucko.luckperms.common.core.model.User user = plugin.getUserManager().getByUsername(name);
|
||||
return user == null ? null : new UserDelegate(user);
|
||||
return user == null ? null : user.getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -170,7 +140,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
|
||||
@Override
|
||||
public Set<User> getUsers() {
|
||||
return plugin.getUserManager().getAll().values().stream().map(UserDelegate::new).collect(Collectors.toSet());
|
||||
return plugin.getUserManager().getAll().values().stream().map(u -> u.getDelegate()).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -187,7 +157,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
@Override
|
||||
public Group getGroup(@NonNull String name) {
|
||||
final me.lucko.luckperms.common.core.model.Group group = plugin.getGroupManager().getIfLoaded(name);
|
||||
return group == null ? null : new GroupDelegate(group);
|
||||
return group == null ? null : group.getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -197,7 +167,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
|
||||
@Override
|
||||
public Set<Group> getGroups() {
|
||||
return plugin.getGroupManager().getAll().values().stream().map(GroupDelegate::new).collect(Collectors.toSet());
|
||||
return plugin.getGroupManager().getAll().values().stream().map(g -> g.getDelegate()).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -208,7 +178,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
@Override
|
||||
public Track getTrack(@NonNull String name) {
|
||||
final me.lucko.luckperms.common.core.model.Track track = plugin.getTrackManager().getIfLoaded(name);
|
||||
return track == null ? null : new TrackDelegate(track);
|
||||
return track == null ? null : track.getDelegate();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -218,7 +188,7 @@ public class ApiProvider implements LuckPermsApi {
|
||||
|
||||
@Override
|
||||
public Set<Track> getTracks() {
|
||||
return plugin.getTrackManager().getAll().values().stream().map(TrackDelegate::new).collect(Collectors.toSet());
|
||||
return plugin.getTrackManager().getAll().values().stream().map(t -> t.getDelegate()).collect(Collectors.toSet());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -238,16 +208,10 @@ public class ApiProvider implements LuckPermsApi {
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void registerContextCalculator(IContextCalculator<?> contextCalculator) {
|
||||
public void registerContextCalculator(ContextCalculator<?> contextCalculator) {
|
||||
plugin.getContextManager().registerCalculator(contextCalculator);
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public void registerContextListener(ContextListener<?> contextListener) {
|
||||
plugin.getContextManager().registerListener(contextListener);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<Contexts> getContextForUser(User user) {
|
||||
ApiUtils.checkUser(user);
|
||||
|
||||
@@ -29,9 +29,9 @@ import com.google.common.base.Preconditions;
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.common.api.delegate.GroupDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.TrackDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.UserDelegate;
|
||||
import me.lucko.luckperms.common.api.delegates.GroupDelegate;
|
||||
import me.lucko.luckperms.common.api.delegates.TrackDelegate;
|
||||
import me.lucko.luckperms.common.api.delegates.UserDelegate;
|
||||
import me.lucko.luckperms.common.utils.ArgumentChecker;
|
||||
|
||||
@UtilityClass
|
||||
|
||||
@@ -1,440 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
|
||||
import me.lucko.luckperms.api.Datastore;
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.Log;
|
||||
import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.data.Callback;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.common.storage.Storage;
|
||||
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.CompletableFuture;
|
||||
|
||||
import static me.lucko.luckperms.common.api.ApiUtils.checkGroup;
|
||||
import static me.lucko.luckperms.common.api.ApiUtils.checkName;
|
||||
import static me.lucko.luckperms.common.api.ApiUtils.checkTrack;
|
||||
import static me.lucko.luckperms.common.api.ApiUtils.checkUser;
|
||||
import static me.lucko.luckperms.common.api.ApiUtils.checkUsername;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class DatastoreDelegate implements Datastore {
|
||||
|
||||
private final LuckPermsPlugin plugin;
|
||||
private final Storage master;
|
||||
private final Async async;
|
||||
private final Sync sync;
|
||||
private final Future future;
|
||||
|
||||
public DatastoreDelegate(@NonNull LuckPermsPlugin plugin, @NonNull Storage master) {
|
||||
this.plugin = plugin;
|
||||
this.master = master;
|
||||
this.async = new Async(master);
|
||||
this.sync = new Sync(master);
|
||||
this.future = new Future(master);
|
||||
}
|
||||
|
||||
private <T> void registerCallback(CompletableFuture<T> fut, Callback<T> c) {
|
||||
if (c != null) {
|
||||
fut.thenAcceptAsync(Callback.convertToConsumer(c), plugin.getScheduler().getSyncExecutor());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getName() {
|
||||
return master.getName();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isAcceptingLogins() {
|
||||
return master.isAcceptingLogins();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Datastore.Async async() {
|
||||
return async;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Datastore.Sync sync() {
|
||||
return sync;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Datastore.Future future() {
|
||||
return future;
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
public class Async implements Datastore.Async {
|
||||
private final me.lucko.luckperms.common.storage.Storage master;
|
||||
|
||||
@Override
|
||||
public void logAction(@NonNull LogEntry entry, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().logAction(entry), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getLog(@NonNull Callback<Log> callback) {
|
||||
master.force().getLog().thenAcceptAsync(log -> callback.onComplete(new LogDelegate(log)), plugin.getScheduler().getSyncExecutor());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadOrCreateUser(@NonNull UUID uuid, @NonNull String username, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().loadUser(uuid, checkUsername(username)), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUser(@NonNull UUID uuid, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().loadUser(uuid, "null"), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadUser(@NonNull UUID uuid, @NonNull String username, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().loadUser(uuid, checkUsername(username)), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveUser(@NonNull User user, Callback<Boolean> callback) {
|
||||
checkUser(user);
|
||||
registerCallback(master.force().saveUser(((UserDelegate) user).getMaster()), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void cleanupUsers(Callback<Boolean> callback) {
|
||||
registerCallback(master.force().cleanupUsers(), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getUniqueUsers(Callback<Set<UUID>> callback) {
|
||||
registerCallback(master.force().getUniqueUsers(), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createAndLoadGroup(@NonNull String name, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().createAndLoadGroup(checkName(name)), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadGroup(@NonNull String name, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().loadGroup(checkName(name)), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadAllGroups(Callback<Boolean> callback) {
|
||||
registerCallback(master.force().loadAllGroups(), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveGroup(@NonNull Group group, Callback<Boolean> callback) {
|
||||
checkGroup(group);
|
||||
registerCallback(master.force().saveGroup(((GroupDelegate) group).getMaster()), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteGroup(@NonNull Group group, Callback<Boolean> callback) {
|
||||
checkGroup(group);
|
||||
if (group.getName().equalsIgnoreCase(plugin.getConfiguration().get(ConfigKeys.DEFAULT_GROUP_NAME))) {
|
||||
throw new IllegalArgumentException("Cannot delete the default group.");
|
||||
}
|
||||
registerCallback(master.force().deleteGroup(((GroupDelegate) group).getMaster()), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void createAndLoadTrack(@NonNull String name, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().createAndLoadTrack(checkName(name)), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadTrack(@NonNull String name, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().loadTrack(checkName(name)), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadAllTracks(Callback<Boolean> callback) {
|
||||
registerCallback(master.force().loadAllTracks(), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveTrack(@NonNull Track track, Callback<Boolean> callback) {
|
||||
checkTrack(track);
|
||||
registerCallback(master.force().saveTrack(((TrackDelegate) track).getMaster()), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteTrack(@NonNull Track track, Callback<Boolean> callback) {
|
||||
checkTrack(track);
|
||||
registerCallback(master.force().deleteTrack(((TrackDelegate) track).getMaster()), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void saveUUIDData(@NonNull String username, @NonNull UUID uuid, Callback<Boolean> callback) {
|
||||
registerCallback(master.force().saveUUIDData(checkUsername(username), uuid), callback);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getUUID(@NonNull String username, Callback<UUID> callback) {
|
||||
registerCallback(master.force().getUUID(checkUsername(username)), callback);
|
||||
}
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
public class Sync implements Datastore.Sync {
|
||||
private final Storage master;
|
||||
|
||||
@Override
|
||||
public boolean logAction(@NonNull LogEntry entry) {
|
||||
return master.force().logAction(entry).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Log getLog() {
|
||||
me.lucko.luckperms.common.data.Log log = master.force().getLog().join();
|
||||
if (log == null) {
|
||||
return null;
|
||||
}
|
||||
return new LogDelegate(log);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadOrCreateUser(@NonNull UUID uuid, @NonNull String username) {
|
||||
return master.force().loadUser(uuid, checkUsername(username)).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadUser(@NonNull UUID uuid) {
|
||||
return master.force().loadUser(uuid, "null").join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadUser(@NonNull UUID uuid, @NonNull String username) {
|
||||
return master.force().loadUser(uuid, checkUsername(username)).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean saveUser(@NonNull User user) {
|
||||
checkUser(user);
|
||||
return master.force().saveUser(((UserDelegate) user).getMaster()).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean cleanupUsers() {
|
||||
return master.force().cleanupUsers().join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<UUID> getUniqueUsers() {
|
||||
return master.force().getUniqueUsers().join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAndLoadGroup(@NonNull String name) {
|
||||
return master.force().createAndLoadGroup(checkName(name)).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadGroup(@NonNull String name) {
|
||||
return master.force().loadGroup(checkName(name)).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadAllGroups() {
|
||||
return master.force().loadAllGroups().join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean saveGroup(@NonNull Group group) {
|
||||
checkGroup(group);
|
||||
return master.force().saveGroup(((GroupDelegate) group).getMaster()).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteGroup(@NonNull Group group) {
|
||||
checkGroup(group);
|
||||
if (group.getName().equalsIgnoreCase(plugin.getConfiguration().get(ConfigKeys.DEFAULT_GROUP_NAME))) {
|
||||
throw new IllegalArgumentException("Cannot delete the default group.");
|
||||
}
|
||||
return master.force().deleteGroup(((GroupDelegate) group).getMaster()).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean createAndLoadTrack(@NonNull String name) {
|
||||
return master.force().createAndLoadTrack(checkName(name)).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadTrack(@NonNull String name) {
|
||||
return master.force().loadTrack(checkName(name)).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean loadAllTracks() {
|
||||
return master.force().loadAllTracks().join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean saveTrack(@NonNull Track track) {
|
||||
checkTrack(track);
|
||||
return master.force().saveTrack(((TrackDelegate) track).getMaster()).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean deleteTrack(@NonNull Track track) {
|
||||
checkTrack(track);
|
||||
return master.force().deleteTrack(((TrackDelegate) track).getMaster()).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean saveUUIDData(@NonNull String username, @NonNull UUID uuid) {
|
||||
return master.force().saveUUIDData(checkUsername(username), uuid).join();
|
||||
}
|
||||
|
||||
@Override
|
||||
public UUID getUUID(@NonNull String username) {
|
||||
return master.force().getUUID(checkUsername(username)).join();
|
||||
}
|
||||
}
|
||||
|
||||
@AllArgsConstructor
|
||||
public class Future implements Datastore.Future {
|
||||
private final Storage master;
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> logAction(@NonNull LogEntry entry) {
|
||||
return master.force().logAction(entry);
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Log> getLog() {
|
||||
return master.force().getLog().thenApply(log -> log == null ? null : new LogDelegate(log));
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> loadOrCreateUser(@NonNull UUID uuid, @NonNull String username) {
|
||||
return master.force().loadUser(uuid, checkUsername(username));
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> loadUser(@NonNull UUID uuid) {
|
||||
return master.force().loadUser(uuid, "null");
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> loadUser(@NonNull UUID uuid, @NonNull String username) {
|
||||
return master.force().loadUser(uuid, checkUsername(username));
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> saveUser(@NonNull User user) {
|
||||
checkUser(user);
|
||||
return master.force().saveUser(((UserDelegate) user).getMaster());
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> cleanupUsers() {
|
||||
return master.force().cleanupUsers();
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Set<UUID>> getUniqueUsers() {
|
||||
return master.force().getUniqueUsers();
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> createAndLoadGroup(@NonNull String name) {
|
||||
return master.force().createAndLoadGroup(checkName(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> loadGroup(@NonNull String name) {
|
||||
return master.force().loadGroup(checkName(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> loadAllGroups() {
|
||||
return master.force().loadAllGroups();
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> saveGroup(@NonNull Group group) {
|
||||
checkGroup(group);
|
||||
return master.force().saveGroup(((GroupDelegate) group).getMaster());
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> deleteGroup(@NonNull Group group) {
|
||||
checkGroup(group);
|
||||
if (group.getName().equalsIgnoreCase(plugin.getConfiguration().get(ConfigKeys.DEFAULT_GROUP_NAME))) {
|
||||
throw new IllegalArgumentException("Cannot delete the default group.");
|
||||
}
|
||||
return master.force().deleteGroup(((GroupDelegate) group).getMaster());
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> createAndLoadTrack(@NonNull String name) {
|
||||
return master.force().createAndLoadTrack(checkName(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> loadTrack(@NonNull String name) {
|
||||
return master.force().loadTrack(checkName(name));
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> loadAllTracks() {
|
||||
return master.force().loadAllTracks();
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> saveTrack(@NonNull Track track) {
|
||||
checkTrack(track);
|
||||
return master.force().saveTrack(((TrackDelegate) track).getMaster());
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> deleteTrack(@NonNull Track track) {
|
||||
checkTrack(track);
|
||||
return master.force().deleteTrack(((TrackDelegate) track).getMaster());
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<Boolean> saveUUIDData(@NonNull String username, @NonNull UUID uuid) {
|
||||
return master.force().saveUUIDData(checkUsername(username), uuid);
|
||||
}
|
||||
|
||||
@Override
|
||||
public java.util.concurrent.Future<UUID> getUUID(@NonNull String username) {
|
||||
return master.force().getUUID(checkUsername(username));
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.EqualsAndHashCode;
|
||||
+1
-23
@@ -20,13 +20,12 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import me.lucko.luckperms.api.LPConfiguration;
|
||||
import me.lucko.luckperms.api.data.DatastoreConfiguration;
|
||||
import me.lucko.luckperms.api.data.MySQLConfiguration;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.config.LuckPermsConfiguration;
|
||||
|
||||
@@ -49,16 +48,6 @@ public class LPConfigurationDelegate implements LPConfiguration {
|
||||
return master.get(ConfigKeys.SYNC_TIME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultGroupNode() {
|
||||
return master.get(ConfigKeys.DEFAULT_GROUP_NODE);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDefaultGroupName() {
|
||||
return master.get(ConfigKeys.DEFAULT_GROUP_NAME);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getIncludeGlobalPerms() {
|
||||
return master.get(ConfigKeys.INCLUDING_GLOBAL_PERMS);
|
||||
@@ -104,11 +93,6 @@ public class LPConfigurationDelegate implements LPConfiguration {
|
||||
return master.get(ConfigKeys.LOG_NOTIFY);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getDebugPermissionChecks() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getEnableOps() {
|
||||
return master.get(ConfigKeys.OPS_ENABLED);
|
||||
@@ -134,12 +118,6 @@ public class LPConfigurationDelegate implements LPConfiguration {
|
||||
return master.get(ConfigKeys.VAULT_INCLUDING_GLOBAL);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public MySQLConfiguration getDatabaseValues() {
|
||||
return getDatastoreConfig();
|
||||
}
|
||||
|
||||
@Override
|
||||
public DatastoreConfiguration getDatastoreConfig() {
|
||||
return master.get(ConfigKeys.DATABASE_VALUES);
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.NonNull;
|
||||
|
||||
+1
-80
@@ -20,12 +20,11 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
import com.google.common.collect.ImmutableSortedSet;
|
||||
|
||||
@@ -34,22 +33,18 @@ import me.lucko.luckperms.api.LocalizedNode;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.PermissionHolder;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.common.utils.ExtractedContexts;
|
||||
import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
|
||||
import me.lucko.luckperms.exceptions.ObjectLacksException;
|
||||
|
||||
import java.util.AbstractMap;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.SortedSet;
|
||||
import java.util.TreeSet;
|
||||
|
||||
import static me.lucko.luckperms.common.api.ApiUtils.checkTime;
|
||||
import static me.lucko.luckperms.common.core.model.PermissionHolder.exportToLegacy;
|
||||
|
||||
/**
|
||||
* Provides a link between {@link PermissionHolder} and {@link me.lucko.luckperms.common.core.model.PermissionHolder}
|
||||
@@ -79,11 +74,6 @@ public class PermissionHolderDelegate implements PermissionHolder {
|
||||
return ImmutableSet.copyOf(master.getTransientNodes());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Node> getAllNodes() {
|
||||
return ImmutableSet.copyOf(master.getAllNodes(null, ExtractedContexts.generate(Contexts.allowAll())));
|
||||
}
|
||||
|
||||
@Override
|
||||
public SortedSet<LocalizedNode> getAllNodes(@NonNull Contexts contexts) {
|
||||
return new TreeSet<>(master.getAllNodes(null, ExtractedContexts.generate(contexts)));
|
||||
@@ -99,11 +89,6 @@ public class PermissionHolderDelegate implements PermissionHolder {
|
||||
return new HashMap<>(master.exportNodes(contexts, lowerCase));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getNodes() {
|
||||
return ImmutableMap.copyOf(exportToLegacy(master.getNodes()));
|
||||
}
|
||||
|
||||
@Override
|
||||
public Tristate hasPermission(@NonNull Node node) {
|
||||
return master.hasPermission(node, false);
|
||||
@@ -314,75 +299,11 @@ public class PermissionHolderDelegate implements PermissionHolder {
|
||||
master.clearTransientNodes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getLocalPermissions(String server, String world, List<String> excludedGroups, List<String> possibleNodes) {
|
||||
Map<String, String> context = new HashMap<>();
|
||||
if (server != null && !server.equals("")) {
|
||||
context.put("server", server);
|
||||
}
|
||||
if (world != null && !world.equals("")) {
|
||||
context.put("world", world);
|
||||
}
|
||||
return master.exportNodes(new Contexts(ContextSet.fromMap(context), true, true, true, true, true, false), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getLocalPermissions(String server, String world, List<String> excludedGroups) {
|
||||
Map<String, String> context = new HashMap<>();
|
||||
if (server != null && !server.equals("")) {
|
||||
context.put("server", server);
|
||||
}
|
||||
if (world != null && !world.equals("")) {
|
||||
context.put("world", world);
|
||||
}
|
||||
return master.exportNodes(new Contexts(ContextSet.fromMap(context), true, true, true, true, true, false), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getLocalPermissions(String server, List<String> excludedGroups, List<String> possibleNodes) {
|
||||
return getLocalPermissions(server, null, excludedGroups, possibleNodes);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getLocalPermissions(String server, List<String> excludedGroups) {
|
||||
return getLocalPermissions(server, null, excludedGroups, null);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getPermissions(String server, String world, Map<String, String> extraContext, boolean includeGlobal, List<String> possibleNodes, boolean applyGroups) {
|
||||
if (extraContext == null) {
|
||||
extraContext = new HashMap<>();
|
||||
}
|
||||
if (server != null && !server.equals("")) {
|
||||
extraContext.put("server", server);
|
||||
}
|
||||
if (world != null && !world.equals("")) {
|
||||
extraContext.put("world", world);
|
||||
}
|
||||
return master.exportNodes(new Contexts(ContextSet.fromMap(extraContext), includeGlobal, includeGlobal, applyGroups, true, true, false), false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<Map.Entry<String, Boolean>, Long> getTemporaryNodes() {
|
||||
Map<Map.Entry<String, Boolean>, Long> m = new HashMap<>();
|
||||
|
||||
for (Node node : master.getTemporaryNodes()) {
|
||||
m.put(new AbstractMap.SimpleEntry<>(node.getKey(), node.getValue()), node.getExpiryUnixTime());
|
||||
}
|
||||
|
||||
return m;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Node> getTemporaryPermissionNodes() {
|
||||
return master.getTemporaryNodes();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Map<String, Boolean> getPermanentNodes() {
|
||||
return exportToLegacy(master.getPermanentNodes());
|
||||
}
|
||||
|
||||
@Override
|
||||
public Set<Node> getPermanentPermissionNodes() {
|
||||
return master.getPermanentNodes();
|
||||
+7
-5
@@ -20,7 +20,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
@@ -32,6 +32,8 @@ import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.Storage;
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
|
||||
@@ -113,7 +115,7 @@ public class StorageDelegate implements Storage {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> createAndLoadGroup(String name) {
|
||||
return master.force().createAndLoadGroup(checkName(name));
|
||||
return master.force().createAndLoadGroup(checkName(name), CreationCause.API);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -138,7 +140,7 @@ public class StorageDelegate implements Storage {
|
||||
if (group.getName().equalsIgnoreCase(plugin.getConfiguration().get(ConfigKeys.DEFAULT_GROUP_NAME))) {
|
||||
throw new IllegalArgumentException("Cannot delete the default group.");
|
||||
}
|
||||
return master.force().deleteGroup(((GroupDelegate) group).getMaster());
|
||||
return master.force().deleteGroup(((GroupDelegate) group).getMaster(), DeletionCause.API);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -148,7 +150,7 @@ public class StorageDelegate implements Storage {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> createAndLoadTrack(String name) {
|
||||
return master.force().createAndLoadTrack(checkName(name));
|
||||
return master.force().createAndLoadTrack(checkName(name), CreationCause.API);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -170,7 +172,7 @@ public class StorageDelegate implements Storage {
|
||||
@Override
|
||||
public CompletableFuture<Boolean> deleteTrack(Track track) {
|
||||
checkTrack(track);
|
||||
return master.force().deleteTrack(((TrackDelegate) track).getMaster());
|
||||
return master.force().deleteTrack(((TrackDelegate) track).getMaster(), DeletionCause.API);
|
||||
}
|
||||
|
||||
@Override
|
||||
+1
-2
@@ -20,7 +20,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.EqualsAndHashCode;
|
||||
@@ -40,7 +40,6 @@ import static me.lucko.luckperms.common.api.ApiUtils.checkGroup;
|
||||
* Provides a link between {@link Track} and {@link me.lucko.luckperms.common.core.model.Track}
|
||||
*/
|
||||
@EqualsAndHashCode(of = {"name"})
|
||||
@SuppressWarnings("unused")
|
||||
public class TrackDelegate implements Track {
|
||||
|
||||
@Getter(AccessLevel.PACKAGE)
|
||||
+1
-2
@@ -20,7 +20,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
@@ -43,7 +43,6 @@ import static me.lucko.luckperms.common.api.ApiUtils.checkTime;
|
||||
* Provides a link between {@link User} and {@link me.lucko.luckperms.common.core.model.User}
|
||||
*/
|
||||
@EqualsAndHashCode(of = {"uuid"}, callSuper = false)
|
||||
@SuppressWarnings("unused")
|
||||
public class UserDelegate extends PermissionHolderDelegate implements User {
|
||||
|
||||
@Getter
|
||||
+1
-1
@@ -20,7 +20,7 @@
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.api.delegate;
|
||||
package me.lucko.luckperms.common.api.delegates;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
-6
@@ -22,9 +22,6 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.generic.parent;
|
||||
|
||||
import me.lucko.luckperms.api.event.events.GroupAddEvent;
|
||||
import me.lucko.luckperms.common.api.delegate.GroupDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.PermissionHolderDelegate;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandException;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
@@ -93,21 +90,18 @@ public class ParentAddTemp extends SharedSubCommand {
|
||||
Message.SET_TEMP_INHERIT_SUCCESS.send(sender, holder.getFriendlyName(), group.getDisplayName(),
|
||||
DateUtil.formatDateDiff(duration)
|
||||
);
|
||||
plugin.getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(holder), new GroupDelegate(group), null, null, duration));
|
||||
break;
|
||||
case SERVER:
|
||||
duration = holder.setPermission(new NodeBuilder("group." + group.getName()).setValue(true).setServer(server).setExpiry(duration).build(), modifier).getExpiryUnixTime();
|
||||
Message.SET_TEMP_INHERIT_SERVER_SUCCESS.send(sender, holder.getFriendlyName(), group.getDisplayName(),
|
||||
server, DateUtil.formatDateDiff(duration)
|
||||
);
|
||||
plugin.getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(holder), new GroupDelegate(group), server, null, duration));
|
||||
break;
|
||||
case SERVER_AND_WORLD:
|
||||
duration = holder.setPermission(new NodeBuilder("group." + group.getName()).setValue(true).setServer(server).setWorld(world).setExpiry(duration).build(), modifier).getExpiryUnixTime();
|
||||
Message.SET_TEMP_INHERIT_SERVER_WORLD_SUCCESS.send(sender, holder.getFriendlyName(), group.getDisplayName(),
|
||||
server, world, DateUtil.formatDateDiff(duration)
|
||||
);
|
||||
plugin.getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(holder), new GroupDelegate(group), server, world, duration));
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.group;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
import me.lucko.luckperms.common.commands.SingleCommand;
|
||||
@@ -62,7 +63,7 @@ public class CreateGroup extends SingleCommand {
|
||||
return CommandResult.INVALID_ARGS;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().createAndLoadGroup(groupName).join()) {
|
||||
if (!plugin.getStorage().createAndLoadGroup(groupName, CreationCause.COMMAND).join()) {
|
||||
Message.CREATE_GROUP_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.group;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
import me.lucko.luckperms.common.commands.SingleCommand;
|
||||
@@ -73,7 +74,7 @@ public class DeleteGroup extends SingleCommand {
|
||||
return CommandResult.LOADING_ERROR;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().deleteGroup(group).join()) {
|
||||
if (!plugin.getStorage().deleteGroup(group, DeletionCause.COMMAND).join()) {
|
||||
Message.DELETE_GROUP_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.group;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandException;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
@@ -57,7 +58,7 @@ public class GroupClone extends SubCommand<Group> {
|
||||
return CommandResult.INVALID_ARGS;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().createAndLoadGroup(newGroupName).join()) {
|
||||
if (!plugin.getStorage().createAndLoadGroup(newGroupName, CreationCause.COMMAND).join()) {
|
||||
Message.CREATE_GROUP_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.group;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandException;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
@@ -57,7 +59,7 @@ public class GroupRename extends SubCommand<Group> {
|
||||
return CommandResult.INVALID_ARGS;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().createAndLoadGroup(newGroupName).join()) {
|
||||
if (!plugin.getStorage().createAndLoadGroup(newGroupName, CreationCause.COMMAND).join()) {
|
||||
Message.CREATE_GROUP_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
@@ -68,7 +70,7 @@ public class GroupRename extends SubCommand<Group> {
|
||||
return CommandResult.LOADING_ERROR;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().deleteGroup(group).join()) {
|
||||
if (!plugin.getStorage().deleteGroup(group, DeletionCause.COMMAND).join()) {
|
||||
Message.DELETE_GROUP_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.track;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
import me.lucko.luckperms.common.commands.SingleCommand;
|
||||
@@ -62,7 +63,7 @@ public class CreateTrack extends SingleCommand {
|
||||
return CommandResult.INVALID_ARGS;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().createAndLoadTrack(trackName).join()) {
|
||||
if (!plugin.getStorage().createAndLoadTrack(trackName, CreationCause.COMMAND).join()) {
|
||||
Message.CREATE_TRACK_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.track;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
import me.lucko.luckperms.common.commands.SingleCommand;
|
||||
@@ -66,7 +67,7 @@ public class DeleteTrack extends SingleCommand {
|
||||
return CommandResult.LOADING_ERROR;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().deleteTrack(track).join()) {
|
||||
if (!plugin.getStorage().deleteTrack(track, DeletionCause.COMMAND).join()) {
|
||||
Message.DELETE_TRACK_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.track;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandException;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
@@ -57,7 +58,7 @@ public class TrackClone extends SubCommand<Track> {
|
||||
return CommandResult.INVALID_ARGS;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().createAndLoadTrack(newTrackName).join()) {
|
||||
if (!plugin.getStorage().createAndLoadTrack(newTrackName, CreationCause.INTERNAL).join()) {
|
||||
Message.CREATE_TRACK_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
|
||||
package me.lucko.luckperms.common.commands.track;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandException;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
@@ -57,7 +59,7 @@ public class TrackRename extends SubCommand<Track> {
|
||||
return CommandResult.INVALID_ARGS;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().createAndLoadTrack(newTrackName).join()) {
|
||||
if (!plugin.getStorage().createAndLoadTrack(newTrackName, CreationCause.COMMAND).join()) {
|
||||
Message.CREATE_TRACK_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
@@ -68,7 +70,7 @@ public class TrackRename extends SubCommand<Track> {
|
||||
return CommandResult.LOADING_ERROR;
|
||||
}
|
||||
|
||||
if (!plugin.getStorage().deleteTrack(track).join()) {
|
||||
if (!plugin.getStorage().deleteTrack(track, DeletionCause.COMMAND).join()) {
|
||||
Message.DELETE_TRACK_ERROR.send(sender);
|
||||
return CommandResult.FAILURE;
|
||||
}
|
||||
|
||||
@@ -25,9 +25,6 @@ package me.lucko.luckperms.common.commands.user;
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.event.events.UserDemoteEvent;
|
||||
import me.lucko.luckperms.common.api.delegate.TrackDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.UserDelegate;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandException;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
@@ -150,7 +147,7 @@ public class UserDemote extends SubCommand<User> {
|
||||
.action("demote " + args.stream().collect(Collectors.joining(" ")))
|
||||
.build().submit(plugin, sender);
|
||||
save(user, sender, plugin);
|
||||
plugin.getApiProvider().fireEventAsync(new UserDemoteEvent(new TrackDelegate(track), new UserDelegate(user), old, null));
|
||||
plugin.getApiProvider().getEventFactory().handleUserDemote(user, track, old, null);
|
||||
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
@@ -194,7 +191,7 @@ public class UserDemote extends SubCommand<User> {
|
||||
.action("demote " + args.stream().collect(Collectors.joining(" ")))
|
||||
.build().submit(plugin, sender);
|
||||
save(user, sender, plugin);
|
||||
plugin.getApiProvider().fireEventAsync(new UserDemoteEvent(new TrackDelegate(track), new UserDelegate(user), old, previousGroup.getName()));
|
||||
plugin.getApiProvider().getEventFactory().handleUserDemote(user, track, old, previousGroup.getName());
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -25,9 +25,6 @@ package me.lucko.luckperms.common.commands.user;
|
||||
import com.google.common.base.Objects;
|
||||
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.event.events.UserPromoteEvent;
|
||||
import me.lucko.luckperms.common.api.delegate.TrackDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.UserDelegate;
|
||||
import me.lucko.luckperms.common.commands.Arg;
|
||||
import me.lucko.luckperms.common.commands.CommandException;
|
||||
import me.lucko.luckperms.common.commands.CommandResult;
|
||||
@@ -147,7 +144,7 @@ public class UserPromote extends SubCommand<User> {
|
||||
.action("promote " + args.stream().collect(Collectors.joining(" ")))
|
||||
.build().submit(plugin, sender);
|
||||
save(user, sender, plugin);
|
||||
plugin.getApiProvider().fireEventAsync(new UserPromoteEvent(new TrackDelegate(track), new UserDelegate(user), null, first));
|
||||
plugin.getApiProvider().getEventFactory().handleUserPromote(user, track, null, first);
|
||||
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
@@ -211,7 +208,7 @@ public class UserPromote extends SubCommand<User> {
|
||||
.action("promote " + args.stream().collect(Collectors.joining(" ")))
|
||||
.build().submit(plugin, sender);
|
||||
save(user, sender, plugin);
|
||||
plugin.getApiProvider().fireEventAsync(new UserPromoteEvent(new TrackDelegate(track), new UserDelegate(user), old, nextGroup.getName()));
|
||||
plugin.getApiProvider().getEventFactory().handleUserPromote(user, track, old, nextGroup.getName());
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
@@ -22,10 +22,13 @@
|
||||
|
||||
package me.lucko.luckperms.common.config;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
|
||||
import me.lucko.luckperms.common.api.delegates.LPConfigurationDelegate;
|
||||
import me.lucko.luckperms.common.config.keys.EnduringKey;
|
||||
|
||||
import java.util.Optional;
|
||||
@@ -42,6 +45,9 @@ public abstract class AbstractConfiguration implements LuckPermsConfiguration {
|
||||
}
|
||||
});
|
||||
|
||||
@Getter
|
||||
private final LPConfigurationDelegate delegate = new LPConfigurationDelegate(this);
|
||||
|
||||
@Override
|
||||
public <T> T get(ConfigKey<T> key) {
|
||||
return (T) cache.getUnchecked(key).orElse(null);
|
||||
@@ -60,5 +66,7 @@ public abstract class AbstractConfiguration implements LuckPermsConfiguration {
|
||||
cache.invalidateAll(toInvalidate);
|
||||
|
||||
loadAll();
|
||||
|
||||
getPlugin().getApiProvider().getEventFactory().handleConfigReload();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
|
||||
package me.lucko.luckperms.common.config;
|
||||
|
||||
import me.lucko.luckperms.common.api.delegates.LPConfigurationDelegate;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
|
||||
import java.util.List;
|
||||
@@ -29,6 +30,8 @@ import java.util.Map;
|
||||
|
||||
public interface LuckPermsConfiguration {
|
||||
|
||||
LPConfigurationDelegate getDelegate();
|
||||
|
||||
LuckPermsPlugin getPlugin();
|
||||
|
||||
void init();
|
||||
|
||||
@@ -26,9 +26,8 @@ import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
|
||||
import me.lucko.luckperms.api.context.ContextListener;
|
||||
import me.lucko.luckperms.api.context.ContextCalculator;
|
||||
import me.lucko.luckperms.api.context.ContextSet;
|
||||
import me.lucko.luckperms.api.context.IContextCalculator;
|
||||
import me.lucko.luckperms.api.context.MutableContextSet;
|
||||
|
||||
import java.util.List;
|
||||
@@ -37,8 +36,7 @@ import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class ContextManager<T> {
|
||||
|
||||
private final List<IContextCalculator<T>> calculators = new CopyOnWriteArrayList<>();
|
||||
private final List<ContextListener<T>> listeners = new CopyOnWriteArrayList<>();
|
||||
private final List<ContextCalculator<T>> calculators = new CopyOnWriteArrayList<>();
|
||||
|
||||
private final LoadingCache<T, ContextSet> cache = CacheBuilder.newBuilder()
|
||||
.weakKeys()
|
||||
@@ -51,7 +49,7 @@ public class ContextManager<T> {
|
||||
});
|
||||
|
||||
private MutableContextSet calculateApplicableContext(T subject, MutableContextSet accumulator) {
|
||||
for (IContextCalculator<T> calculator : calculators) {
|
||||
for (ContextCalculator<T> calculator : calculators) {
|
||||
calculator.giveApplicableContext(subject, accumulator);
|
||||
}
|
||||
return accumulator;
|
||||
@@ -61,19 +59,10 @@ public class ContextManager<T> {
|
||||
return cache.getUnchecked(subject);
|
||||
}
|
||||
|
||||
public void registerCalculator(IContextCalculator<T> calculator) {
|
||||
listeners.forEach(calculator::addListener);
|
||||
public void registerCalculator(ContextCalculator<T> calculator) {
|
||||
calculators.add(calculator);
|
||||
}
|
||||
|
||||
public void registerListener(ContextListener<T> listener) {
|
||||
for (IContextCalculator<T> calculator : calculators) {
|
||||
calculator.addListener(listener);
|
||||
}
|
||||
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
public int getCalculatorsSize() {
|
||||
return calculators.size();
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ import me.lucko.luckperms.common.config.LuckPermsConfiguration;
|
||||
import java.util.Map;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class ServerCalculator<T> extends ContextCalculator<T> {
|
||||
public class ServerCalculator<T> implements ContextCalculator<T> {
|
||||
private final LuckPermsConfiguration config;
|
||||
|
||||
@Override
|
||||
|
||||
@@ -22,12 +22,14 @@
|
||||
|
||||
package me.lucko.luckperms.common.core;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import com.google.common.collect.BiMap;
|
||||
import com.google.common.collect.HashBiMap;
|
||||
import com.google.common.collect.Maps;
|
||||
|
||||
import me.lucko.luckperms.common.api.delegates.UuidCacheDelegate;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
|
||||
@@ -43,6 +45,9 @@ public class UuidCache {
|
||||
// External UUID --> Internal UUID
|
||||
private final BiMap<UUID, UUID> cache = Maps.synchronizedBiMap(HashBiMap.create());
|
||||
|
||||
@Getter
|
||||
private final UuidCacheDelegate delegate = new UuidCacheDelegate(this);
|
||||
|
||||
public UUID getUUID(UUID external) {
|
||||
return plugin.getConfiguration().get(ConfigKeys.ONLINE_MODE) ? external : cache.getOrDefault(external, external);
|
||||
}
|
||||
|
||||
@@ -26,6 +26,7 @@ import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.common.api.delegates.GroupDelegate;
|
||||
import me.lucko.luckperms.common.caching.handlers.GroupReference;
|
||||
import me.lucko.luckperms.common.caching.handlers.HolderReference;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
@@ -42,6 +43,9 @@ public class Group extends PermissionHolder implements Identifiable<String> {
|
||||
@Getter
|
||||
private final String name;
|
||||
|
||||
@Getter
|
||||
private final GroupDelegate delegate = new GroupDelegate(this);
|
||||
|
||||
public Group(String name, LuckPermsPlugin plugin) {
|
||||
super(name, plugin);
|
||||
this.name = name;
|
||||
|
||||
@@ -39,13 +39,7 @@ import me.lucko.luckperms.api.Contexts;
|
||||
import me.lucko.luckperms.api.LocalizedNode;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.Tristate;
|
||||
import me.lucko.luckperms.api.event.events.GroupAddEvent;
|
||||
import me.lucko.luckperms.api.event.events.GroupRemoveEvent;
|
||||
import me.lucko.luckperms.api.event.events.PermissionNodeExpireEvent;
|
||||
import me.lucko.luckperms.api.event.events.PermissionNodeSetEvent;
|
||||
import me.lucko.luckperms.api.event.events.PermissionNodeUnsetEvent;
|
||||
import me.lucko.luckperms.common.api.delegate.GroupDelegate;
|
||||
import me.lucko.luckperms.common.api.delegate.PermissionHolderDelegate;
|
||||
import me.lucko.luckperms.common.api.delegates.PermissionHolderDelegate;
|
||||
import me.lucko.luckperms.common.caching.MetaHolder;
|
||||
import me.lucko.luckperms.common.caching.handlers.CachedStateManager;
|
||||
import me.lucko.luckperms.common.caching.handlers.GroupReference;
|
||||
@@ -384,6 +378,7 @@ public abstract class PermissionHolder {
|
||||
|
||||
public abstract String getFriendlyName();
|
||||
public abstract HolderReference<?> toReference();
|
||||
public abstract PermissionHolderDelegate getDelegate();
|
||||
|
||||
public Set<Node> getNodes() {
|
||||
return enduringCache.get();
|
||||
@@ -549,6 +544,8 @@ public abstract class PermissionHolder {
|
||||
boolean work = false;
|
||||
Set<Node> removed = new HashSet<>();
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getPermissions(true));
|
||||
|
||||
synchronized (nodes) {
|
||||
Iterator<Node> it = nodes.iterator();
|
||||
while (it.hasNext()) {
|
||||
@@ -586,9 +583,10 @@ public abstract class PermissionHolder {
|
||||
return false;
|
||||
}
|
||||
|
||||
PermissionHolderDelegate link = new PermissionHolderDelegate(this);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getPermissions(true));
|
||||
|
||||
for (Node r : removed) {
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeExpireEvent(link, r));
|
||||
plugin.getApiProvider().getEventFactory().handleNodeRemove(r, this, before, after);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -704,12 +702,16 @@ public abstract class PermissionHolder {
|
||||
throw new ObjectAlreadyHasException();
|
||||
}
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
|
||||
synchronized (nodes) {
|
||||
nodes.add(node);
|
||||
}
|
||||
invalidateCache(true);
|
||||
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeSetEvent(new PermissionHolderDelegate(this), node));
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
|
||||
plugin.getApiProvider().getEventFactory().handleNodeAdd(node, this, before, after);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -733,6 +735,8 @@ public abstract class PermissionHolder {
|
||||
// Create a new node with the same properties, but add the expiry dates together
|
||||
Node newNode = NodeFactory.builderFromExisting(node).setExpiry(previous.getExpiryUnixTime() + node.getSecondsTilExpiry()).build();
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
|
||||
// Remove the old node & add the new one.
|
||||
synchronized (nodes) {
|
||||
nodes.remove(previous);
|
||||
@@ -740,8 +744,8 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
|
||||
invalidateCache(true);
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeUnsetEvent(new PermissionHolderDelegate(this), previous));
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeSetEvent(new PermissionHolderDelegate(this), newNode));
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeAdd(newNode, this, before, after);
|
||||
return newNode;
|
||||
}
|
||||
|
||||
@@ -756,14 +760,16 @@ public abstract class PermissionHolder {
|
||||
// Only replace if the new expiry time is greater than the old one.
|
||||
if (node.getExpiryUnixTime() > previous.getExpiryUnixTime()) {
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
|
||||
synchronized (nodes) {
|
||||
nodes.remove(previous);
|
||||
nodes.add(node);
|
||||
}
|
||||
|
||||
invalidateCache(true);
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeUnsetEvent(new PermissionHolderDelegate(this), previous));
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeSetEvent(new PermissionHolderDelegate(this), node));
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeAdd(node, this, before, after);
|
||||
return node;
|
||||
}
|
||||
}
|
||||
@@ -788,12 +794,16 @@ public abstract class PermissionHolder {
|
||||
throw new ObjectAlreadyHasException();
|
||||
}
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getTransientNodes());
|
||||
|
||||
synchronized (transientNodes) {
|
||||
transientNodes.add(node);
|
||||
}
|
||||
invalidateCache(false);
|
||||
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeSetEvent(new PermissionHolderDelegate(this), node));
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getTransientNodes());
|
||||
|
||||
plugin.getApiProvider().getEventFactory().handleNodeAdd(node, this, before, after);
|
||||
}
|
||||
|
||||
public void setPermission(String node, boolean value) throws ObjectAlreadyHasException {
|
||||
@@ -831,17 +841,15 @@ public abstract class PermissionHolder {
|
||||
throw new ObjectLacksException();
|
||||
}
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
|
||||
synchronized (nodes) {
|
||||
nodes.removeIf(e -> e.almostEquals(node));
|
||||
}
|
||||
invalidateCache(true);
|
||||
|
||||
if (node.isGroupNode()) {
|
||||
plugin.getApiProvider().fireEventAsync(new GroupRemoveEvent(new PermissionHolderDelegate(this),
|
||||
node.getGroupName(), node.getServer().orElse(null), node.getWorld().orElse(null), node.isTemporary()));
|
||||
} else {
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeUnsetEvent(new PermissionHolderDelegate(this), node));
|
||||
}
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeRemove(node, this, before, after);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -855,17 +863,15 @@ public abstract class PermissionHolder {
|
||||
throw new ObjectLacksException();
|
||||
}
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getTransientNodes());
|
||||
|
||||
synchronized (transientNodes) {
|
||||
transientNodes.removeIf(e -> e.almostEquals(node));
|
||||
}
|
||||
invalidateCache(false);
|
||||
|
||||
if (node.isGroupNode()) {
|
||||
plugin.getApiProvider().fireEventAsync(new GroupRemoveEvent(new PermissionHolderDelegate(this),
|
||||
node.getGroupName(), node.getServer().orElse(null), node.getWorld().orElse(null), node.isTemporary()));
|
||||
} else {
|
||||
plugin.getApiProvider().fireEventAsync(new PermissionNodeUnsetEvent(new PermissionHolderDelegate(this), node));
|
||||
}
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getTransientNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeRemove(node, this, before, after);
|
||||
}
|
||||
|
||||
public void unsetPermission(String node, boolean temporary) throws ObjectLacksException {
|
||||
@@ -910,7 +916,6 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
|
||||
setPermission("group." + group.getName(), true);
|
||||
getPlugin().getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(this), new GroupDelegate(group), null, null, 0L));
|
||||
}
|
||||
|
||||
public void setInheritGroup(Group group, String server) throws ObjectAlreadyHasException {
|
||||
@@ -919,7 +924,6 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
|
||||
setPermission("group." + group.getName(), true, server);
|
||||
getPlugin().getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(this), new GroupDelegate(group), server, null, 0L));
|
||||
}
|
||||
|
||||
public void setInheritGroup(Group group, String server, String world) throws ObjectAlreadyHasException {
|
||||
@@ -928,7 +932,6 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
|
||||
setPermission("group." + group.getName(), true, server, world);
|
||||
getPlugin().getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(this), new GroupDelegate(group), server, world, 0L));
|
||||
}
|
||||
|
||||
public void setInheritGroup(Group group, long expireAt) throws ObjectAlreadyHasException {
|
||||
@@ -937,7 +940,6 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
|
||||
setPermission("group." + group.getName(), true, expireAt);
|
||||
getPlugin().getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(this), new GroupDelegate(group), null, null, expireAt));
|
||||
}
|
||||
|
||||
public void setInheritGroup(Group group, String server, long expireAt) throws ObjectAlreadyHasException {
|
||||
@@ -946,7 +948,6 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
|
||||
setPermission("group." + group.getName(), true, server, expireAt);
|
||||
getPlugin().getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(this), new GroupDelegate(group), server, null, expireAt));
|
||||
}
|
||||
|
||||
public void setInheritGroup(Group group, String server, String world, long expireAt) throws ObjectAlreadyHasException {
|
||||
@@ -955,7 +956,6 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
|
||||
setPermission("group." + group.getName(), true, server, world, expireAt);
|
||||
getPlugin().getApiProvider().fireEventAsync(new GroupAddEvent(new PermissionHolderDelegate(this), new GroupDelegate(group), server, world, expireAt));
|
||||
}
|
||||
|
||||
public void unsetInheritGroup(Group group) throws ObjectLacksException {
|
||||
@@ -986,27 +986,34 @@ public abstract class PermissionHolder {
|
||||
* Clear all of the holders permission nodes
|
||||
*/
|
||||
public void clearNodes() {
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
nodes.clear();
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearNodes(String server) {
|
||||
String finalServer = Optional.ofNullable(server).orElse("global");
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
if (!nodes.removeIf(n -> n.getServer().orElse("global").equalsIgnoreCase(finalServer))) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearNodes(String server, String world) {
|
||||
String finalServer = Optional.ofNullable(server).orElse("global");
|
||||
String finalWorld = Optional.ofNullable(world).orElse("null");
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
boolean b = nodes.removeIf(n ->
|
||||
n.getServer().orElse("global").equalsIgnoreCase(finalServer) &&
|
||||
@@ -1016,9 +1023,13 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearParents() {
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
|
||||
synchronized (nodes) {
|
||||
boolean b = nodes.removeIf(Node::isGroupNode);
|
||||
if (!b) {
|
||||
@@ -1029,11 +1040,14 @@ public abstract class PermissionHolder {
|
||||
plugin.getUserManager().giveDefaultIfNeeded((User) this, false);
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearParents(String server) {
|
||||
String finalServer = Optional.ofNullable(server).orElse("global");
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
boolean b = nodes.removeIf(n ->
|
||||
n.isGroupNode() && n.getServer().orElse("global").equalsIgnoreCase(finalServer)
|
||||
@@ -1046,12 +1060,15 @@ public abstract class PermissionHolder {
|
||||
plugin.getUserManager().giveDefaultIfNeeded((User) this, false);
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearParents(String server, String world) {
|
||||
String finalServer = Optional.ofNullable(server).orElse("global");
|
||||
String finalWorld = Optional.ofNullable(world).orElse("null");
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
boolean b = nodes.removeIf(n ->
|
||||
n.isGroupNode() &&
|
||||
@@ -1066,20 +1083,27 @@ public abstract class PermissionHolder {
|
||||
plugin.getUserManager().giveDefaultIfNeeded((User) this, false);
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearMeta() {
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
|
||||
synchronized (nodes) {
|
||||
if (!nodes.removeIf(n -> n.isMeta() || n.isPrefix() || n.isSuffix())) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearMeta(String server) {
|
||||
String finalServer = Optional.ofNullable(server).orElse("global");
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
boolean b = nodes.removeIf(n ->
|
||||
(n.isMeta() || n.isPrefix() || n.isSuffix()) &&
|
||||
@@ -1090,12 +1114,15 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearMeta(String server, String world) {
|
||||
String finalServer = Optional.ofNullable(server).orElse("global");
|
||||
String finalWorld = Optional.ofNullable(world).orElse("null");
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
boolean b = nodes.removeIf(n ->
|
||||
(n.isMeta() || n.isPrefix() || n.isSuffix()) && (
|
||||
@@ -1108,12 +1135,15 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearMetaKeys(String key, String server, String world, boolean temp) {
|
||||
String finalServer = Optional.ofNullable(server).orElse("global");
|
||||
String finalWorld = Optional.ofNullable(world).orElse("null");
|
||||
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getNodes());
|
||||
synchronized (nodes) {
|
||||
boolean b = nodes.removeIf(n ->
|
||||
n.isMeta() && (n.isTemporary() == temp) && n.getMeta().getKey().equalsIgnoreCase(key) &&
|
||||
@@ -1125,13 +1155,19 @@ public abstract class PermissionHolder {
|
||||
}
|
||||
}
|
||||
invalidateCache(true);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
public void clearTransientNodes() {
|
||||
ImmutableSet<Node> before = ImmutableSet.copyOf(getTransientNodes());
|
||||
|
||||
synchronized (transientNodes) {
|
||||
transientNodes.clear();
|
||||
}
|
||||
invalidateCache(false);
|
||||
ImmutableSet<Node> after = ImmutableSet.copyOf(getTransientNodes());
|
||||
plugin.getApiProvider().getEventFactory().handleNodeClear(this, before, after);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -29,6 +29,8 @@ import lombok.ToString;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
|
||||
import me.lucko.luckperms.common.api.delegates.TrackDelegate;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
import me.lucko.luckperms.common.utils.Identifiable;
|
||||
import me.lucko.luckperms.exceptions.ObjectAlreadyHasException;
|
||||
import me.lucko.luckperms.exceptions.ObjectLacksException;
|
||||
@@ -49,13 +51,20 @@ public class Track implements Identifiable<String> {
|
||||
*/
|
||||
@Getter
|
||||
private final String name;
|
||||
|
||||
private final LuckPermsPlugin plugin;
|
||||
|
||||
@Getter
|
||||
private final Lock ioLock = new ReentrantLock();
|
||||
|
||||
/**
|
||||
* The groups within this track
|
||||
*/
|
||||
private List<String> groups = Collections.synchronizedList(new ArrayList<>());
|
||||
|
||||
@Getter
|
||||
private final TrackDelegate delegate = new TrackDelegate(this);
|
||||
|
||||
@Override
|
||||
public String getId() {
|
||||
return name.toLowerCase();
|
||||
@@ -147,8 +156,13 @@ public class Track implements Identifiable<String> {
|
||||
* @throws ObjectAlreadyHasException if the group is already on this track somewhere
|
||||
*/
|
||||
public void appendGroup(Group group) throws ObjectAlreadyHasException {
|
||||
List<String> before = ImmutableList.copyOf(groups);
|
||||
|
||||
assertNotContains(group);
|
||||
groups.add(group.getName());
|
||||
|
||||
List<String> after = ImmutableList.copyOf(groups);
|
||||
plugin.getApiProvider().getEventFactory().handleTrackAddGroup(this, group.getName(), before, after);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -160,8 +174,13 @@ public class Track implements Identifiable<String> {
|
||||
* @throws IndexOutOfBoundsException if the position is less than 0 or greater than the size of the track
|
||||
*/
|
||||
public void insertGroup(Group group, int position) throws ObjectAlreadyHasException, IndexOutOfBoundsException {
|
||||
List<String> before = ImmutableList.copyOf(groups);
|
||||
|
||||
assertNotContains(group);
|
||||
groups.add(position, group.getName());
|
||||
|
||||
List<String> after = ImmutableList.copyOf(groups);
|
||||
plugin.getApiProvider().getEventFactory().handleTrackAddGroup(this, group.getName(), before, after);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -181,8 +200,12 @@ public class Track implements Identifiable<String> {
|
||||
* @throws ObjectLacksException if the group is not on this track
|
||||
*/
|
||||
public void removeGroup(String group) throws ObjectLacksException {
|
||||
List<String> before = ImmutableList.copyOf(groups);
|
||||
assertContains(group);
|
||||
groups.remove(group);
|
||||
|
||||
List<String> after = ImmutableList.copyOf(groups);
|
||||
plugin.getApiProvider().getEventFactory().handleTrackRemoveGroup(this, group, before, after);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -209,7 +232,9 @@ public class Track implements Identifiable<String> {
|
||||
* Clear all of the groups within this track
|
||||
*/
|
||||
public void clearGroups() {
|
||||
List<String> before = ImmutableList.copyOf(groups);
|
||||
groups.clear();
|
||||
plugin.getApiProvider().getEventFactory().handleTrackClear(this, before);
|
||||
}
|
||||
|
||||
private void assertNotContains(Group g) throws ObjectAlreadyHasException {
|
||||
|
||||
@@ -28,8 +28,7 @@ import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.caching.UserData;
|
||||
import me.lucko.luckperms.api.event.events.UserPermissionRefreshEvent;
|
||||
import me.lucko.luckperms.common.api.delegate.UserDelegate;
|
||||
import me.lucko.luckperms.common.api.delegates.UserDelegate;
|
||||
import me.lucko.luckperms.common.caching.UserCache;
|
||||
import me.lucko.luckperms.common.caching.handlers.HolderReference;
|
||||
import me.lucko.luckperms.common.caching.handlers.UserReference;
|
||||
@@ -79,6 +78,9 @@ public class User extends PermissionHolder implements Identifiable<UserIdentifie
|
||||
}
|
||||
};
|
||||
|
||||
@Getter
|
||||
private final UserDelegate delegate = new UserDelegate(this);
|
||||
|
||||
public User(UUID uuid, LuckPermsPlugin plugin) {
|
||||
super(uuid.toString(), plugin);
|
||||
this.uuid = uuid;
|
||||
@@ -117,6 +119,8 @@ public class User extends PermissionHolder implements Identifiable<UserIdentifie
|
||||
|
||||
userData = new UserCache(this, getPlugin().getCalculatorFactory());
|
||||
userData.preCalculate(getPlugin().getPreProcessContexts(op));
|
||||
|
||||
getPlugin().getApiProvider().getEventFactory().handleUserCacheLoad(this, userData);
|
||||
getPlugin().onUserRefresh(this);
|
||||
}
|
||||
|
||||
@@ -139,7 +143,7 @@ public class User extends PermissionHolder implements Identifiable<UserIdentifie
|
||||
|
||||
ud.recalculatePermissions();
|
||||
ud.recalculateMeta();
|
||||
getPlugin().getApiProvider().fireEventAsync(new UserPermissionRefreshEvent(new UserDelegate(this)));
|
||||
getPlugin().getApiProvider().getEventFactory().handleUserDataRecalculate(this, userData);
|
||||
getPlugin().onUserRefresh(this);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
|
||||
package me.lucko.luckperms.common.data;
|
||||
|
||||
import me.lucko.luckperms.api.event.events.LogNotifyEvent;
|
||||
import me.lucko.luckperms.common.commands.sender.Sender;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.constants.Message;
|
||||
@@ -49,12 +48,13 @@ public class LogEntry extends me.lucko.luckperms.api.LogEntry {
|
||||
}
|
||||
|
||||
public void submit(LuckPermsPlugin plugin, Sender sender) {
|
||||
plugin.getStorage().logAction(this);
|
||||
if (!plugin.getApiProvider().getEventFactory().handleLogPublish(false, this)) {
|
||||
plugin.getStorage().logAction(this);
|
||||
}
|
||||
|
||||
LogNotifyEvent event = new LogNotifyEvent(this);
|
||||
event.setCancelled(!plugin.getConfiguration().get(ConfigKeys.LOG_NOTIFY));
|
||||
plugin.getApiProvider().fireEvent(event);
|
||||
if (event.isCancelled()) return;
|
||||
if (plugin.getApiProvider().getEventFactory().handleLogBroadcast(!plugin.getConfiguration().get(ConfigKeys.LOG_NOTIFY), this)) {
|
||||
return;
|
||||
}
|
||||
|
||||
final String msg = super.getFormatted();
|
||||
|
||||
|
||||
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
|
||||
import me.lucko.luckperms.api.LuckPermsApi;
|
||||
import me.lucko.luckperms.api.event.LuckPermsEvent;
|
||||
|
||||
public abstract class AbstractEvent implements LuckPermsEvent {
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
private LuckPermsApi api = null;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,218 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.caching.UserData;
|
||||
import me.lucko.luckperms.api.event.LuckPermsEvent;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.core.model.Group;
|
||||
import me.lucko.luckperms.common.core.model.PermissionHolder;
|
||||
import me.lucko.luckperms.common.core.model.Track;
|
||||
import me.lucko.luckperms.common.core.model.User;
|
||||
import me.lucko.luckperms.common.event.impl.EventConfigReload;
|
||||
import me.lucko.luckperms.common.event.impl.EventGroupCreate;
|
||||
import me.lucko.luckperms.common.event.impl.EventGroupDelete;
|
||||
import me.lucko.luckperms.common.event.impl.EventGroupLoad;
|
||||
import me.lucko.luckperms.common.event.impl.EventGroupLoadAll;
|
||||
import me.lucko.luckperms.common.event.impl.EventLogBroadcast;
|
||||
import me.lucko.luckperms.common.event.impl.EventLogPublish;
|
||||
import me.lucko.luckperms.common.event.impl.EventNodeAdd;
|
||||
import me.lucko.luckperms.common.event.impl.EventNodeClear;
|
||||
import me.lucko.luckperms.common.event.impl.EventNodeRemove;
|
||||
import me.lucko.luckperms.common.event.impl.EventPostSync;
|
||||
import me.lucko.luckperms.common.event.impl.EventPreNetworkSync;
|
||||
import me.lucko.luckperms.common.event.impl.EventPreSync;
|
||||
import me.lucko.luckperms.common.event.impl.EventTrackAddGroup;
|
||||
import me.lucko.luckperms.common.event.impl.EventTrackClear;
|
||||
import me.lucko.luckperms.common.event.impl.EventTrackCreate;
|
||||
import me.lucko.luckperms.common.event.impl.EventTrackDelete;
|
||||
import me.lucko.luckperms.common.event.impl.EventTrackLoad;
|
||||
import me.lucko.luckperms.common.event.impl.EventTrackLoadAll;
|
||||
import me.lucko.luckperms.common.event.impl.EventTrackRemoveGroup;
|
||||
import me.lucko.luckperms.common.event.impl.EventUserCacheLoad;
|
||||
import me.lucko.luckperms.common.event.impl.EventUserDataRecalculate;
|
||||
import me.lucko.luckperms.common.event.impl.EventUserDemote;
|
||||
import me.lucko.luckperms.common.event.impl.EventUserFirstLogin;
|
||||
import me.lucko.luckperms.common.event.impl.EventUserLoad;
|
||||
import me.lucko.luckperms.common.event.impl.EventUserPromote;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public final class EventFactory {
|
||||
private final LuckPermsEventBus eventBus;
|
||||
|
||||
private void fireEvent(LuckPermsEvent event) {
|
||||
eventBus.fireEventAsync(event);
|
||||
}
|
||||
|
||||
public void handleGroupCreate(Group group, CreationCause cause) {
|
||||
EventGroupCreate event = new EventGroupCreate(group.getDelegate(), cause);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleGroupDelete(Group group, DeletionCause cause) {
|
||||
EventGroupDelete event = new EventGroupDelete(group.getName(), ImmutableSet.copyOf(group.getNodes()), cause);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleGroupLoadAll() {
|
||||
EventGroupLoadAll event = new EventGroupLoadAll();
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleGroupLoad(Group group) {
|
||||
EventGroupLoad event = new EventGroupLoad(group.getDelegate());
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public boolean handleLogBroadcast(boolean initialState, LogEntry entry) {
|
||||
AtomicBoolean cancel = new AtomicBoolean(initialState);
|
||||
EventLogBroadcast event = new EventLogBroadcast(cancel, entry);
|
||||
eventBus.fireEvent(event);
|
||||
return cancel.get();
|
||||
}
|
||||
|
||||
public boolean handleLogPublish(boolean initialState, LogEntry entry) {
|
||||
AtomicBoolean cancel = new AtomicBoolean(initialState);
|
||||
EventLogPublish event = new EventLogPublish(cancel, entry);
|
||||
eventBus.fireEvent(event);
|
||||
return cancel.get();
|
||||
}
|
||||
|
||||
public void handleNodeAdd(Node node, PermissionHolder target, Set<Node> before, Set<Node> after) {
|
||||
EventNodeAdd event = new EventNodeAdd(node, target.getDelegate(), ImmutableSet.copyOf(before), ImmutableSet.copyOf(after));
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleNodeClear(PermissionHolder target, Set<Node> before, Set<Node> after) {
|
||||
EventNodeClear event = new EventNodeClear(target.getDelegate(), ImmutableSet.copyOf(before), ImmutableSet.copyOf(after));
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleNodeRemove(Node node, PermissionHolder target, Set<Node> before, Set<Node> after) {
|
||||
EventNodeRemove event = new EventNodeRemove(node, target.getDelegate(), ImmutableSet.copyOf(before), ImmutableSet.copyOf(after));
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleConfigReload() {
|
||||
EventConfigReload event = new EventConfigReload();
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handlePostSync() {
|
||||
EventPostSync event = new EventPostSync();
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public boolean handleNetworkPreSync(boolean initialState, UUID id) {
|
||||
AtomicBoolean cancel = new AtomicBoolean(initialState);
|
||||
EventPreNetworkSync event = new EventPreNetworkSync(cancel, id);
|
||||
eventBus.fireEvent(event);
|
||||
return cancel.get();
|
||||
}
|
||||
|
||||
public boolean handlePreSync(boolean initialState) {
|
||||
AtomicBoolean cancel = new AtomicBoolean(initialState);
|
||||
EventPreSync event = new EventPreSync(cancel);
|
||||
eventBus.fireEvent(event);
|
||||
return cancel.get();
|
||||
}
|
||||
|
||||
public void handleTrackCreate(Track track, CreationCause cause) {
|
||||
EventTrackCreate event = new EventTrackCreate(track.getDelegate(), cause);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleTrackDelete(Track track, DeletionCause cause) {
|
||||
EventTrackDelete event = new EventTrackDelete(track.getName(), ImmutableList.copyOf(track.getGroups()), cause);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleTrackLoadAll() {
|
||||
EventTrackLoadAll event = new EventTrackLoadAll();
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleTrackLoad(Track track) {
|
||||
EventTrackLoad event = new EventTrackLoad(track.getDelegate());
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleTrackAddGroup(Track track, String group, List<String> before, List<String> after) {
|
||||
EventTrackAddGroup event = new EventTrackAddGroup(group, track.getDelegate(), ImmutableList.copyOf(before), ImmutableList.copyOf(after));
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleTrackClear(Track track, List<String> before) {
|
||||
EventTrackClear event = new EventTrackClear(track.getDelegate(), ImmutableList.copyOf(before), ImmutableList.of());
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleTrackRemoveGroup(Track track, String group, List<String> before, List<String> after) {
|
||||
EventTrackRemoveGroup event = new EventTrackRemoveGroup(group, track.getDelegate(), ImmutableList.copyOf(before), ImmutableList.copyOf(after));
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleUserCacheLoad(User user, UserData data) {
|
||||
EventUserCacheLoad event = new EventUserCacheLoad(user.getDelegate(), data);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleUserDataRecalculate(User user, UserData data) {
|
||||
EventUserDataRecalculate event = new EventUserDataRecalculate(user.getDelegate(), data);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleUserFirstLogin(UUID uuid, String username) {
|
||||
EventUserFirstLogin event = new EventUserFirstLogin(uuid, username);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleUserLoad(User user) {
|
||||
EventUserLoad event = new EventUserLoad(user.getDelegate());
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleUserDemote(User user, Track track, String from, String to) {
|
||||
EventUserDemote event = new EventUserDemote(track.getDelegate(), user.getDelegate(), from, to);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
public void handleUserPromote(User user, Track track, String from, String to) {
|
||||
EventUserPromote event = new EventUserPromote(track.getDelegate(), user.getDelegate(), from, to);
|
||||
fireEvent(event);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,109 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.NonNull;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import com.google.common.collect.ImmutableSet;
|
||||
|
||||
import me.lucko.luckperms.api.event.Cancellable;
|
||||
import me.lucko.luckperms.api.event.EventBus;
|
||||
import me.lucko.luckperms.api.event.EventHandler;
|
||||
import me.lucko.luckperms.api.event.LuckPermsEvent;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class LuckPermsEventBus implements EventBus {
|
||||
|
||||
@Getter
|
||||
private final LuckPermsPlugin plugin;
|
||||
private final Map<Class<? extends LuckPermsEvent>, Set<LuckPermsEventHandler<?>>> handlerMap = new ConcurrentHashMap<>();
|
||||
|
||||
@Override
|
||||
public <T extends LuckPermsEvent> EventHandler<T> subscribe(@NonNull Class<T> eventClass, @NonNull Consumer<T> handler) {
|
||||
if (!eventClass.isInterface()) {
|
||||
throw new IllegalArgumentException("class " + eventClass + " is not an interface");
|
||||
}
|
||||
if (!LuckPermsEvent.class.isAssignableFrom(eventClass)) {
|
||||
throw new IllegalArgumentException("class " + eventClass.getName() + " does not implement LuckPermsEvent");
|
||||
}
|
||||
|
||||
Set<LuckPermsEventHandler<?>> handlers = handlerMap.computeIfAbsent(eventClass, c -> ConcurrentHashMap.newKeySet());
|
||||
|
||||
LuckPermsEventHandler<T> eventHandler = new LuckPermsEventHandler<>(this, eventClass, handler);
|
||||
handlers.add(eventHandler);
|
||||
|
||||
return eventHandler;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public <T extends LuckPermsEvent> Set<EventHandler<T>> getHandlers(Class<T> eventClass) {
|
||||
Set<LuckPermsEventHandler<?>> handlers = handlerMap.get(eventClass);
|
||||
if (handlers == null) {
|
||||
return ImmutableSet.of();
|
||||
} else {
|
||||
ImmutableSet.Builder<EventHandler<T>> ret = ImmutableSet.builder();
|
||||
for (LuckPermsEventHandler<?> handler : handlers) {
|
||||
ret.add((EventHandler<T>) handler);
|
||||
}
|
||||
|
||||
return ret.build();
|
||||
}
|
||||
}
|
||||
|
||||
public void unregisterHandler(LuckPermsEventHandler<?> handler) {
|
||||
Set<LuckPermsEventHandler<?>> handlers = handlerMap.get(handler.getEventClass());
|
||||
if (handlers != null) {
|
||||
handlers.remove(handler);
|
||||
}
|
||||
}
|
||||
|
||||
public void fireEvent(LuckPermsEvent event) {
|
||||
if (event instanceof AbstractEvent) {
|
||||
((AbstractEvent) event).setApi(plugin.getApiProvider());
|
||||
}
|
||||
|
||||
for (Map.Entry<Class<? extends LuckPermsEvent>, Set<LuckPermsEventHandler<?>>> ent : handlerMap.entrySet()) {
|
||||
if (!ent.getKey().isAssignableFrom(event.getClass())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
ent.getValue().forEach(h -> h.handle(event));
|
||||
}
|
||||
}
|
||||
|
||||
public void fireEventAsync(LuckPermsEvent event) {
|
||||
if (event instanceof Cancellable) {
|
||||
throw new IllegalArgumentException("cannot call Cancellable event async");
|
||||
}
|
||||
plugin.doAsync(() -> fireEvent(event));
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,79 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
|
||||
import me.lucko.luckperms.api.event.EventHandler;
|
||||
import me.lucko.luckperms.api.event.LuckPermsEvent;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
import java.util.function.Consumer;
|
||||
|
||||
@RequiredArgsConstructor
|
||||
public class LuckPermsEventHandler<T extends LuckPermsEvent> implements EventHandler<T> {
|
||||
private final LuckPermsEventBus eventBus;
|
||||
|
||||
@Getter
|
||||
private final Class<T> eventClass;
|
||||
|
||||
@Getter
|
||||
private final Consumer<T> consumer;
|
||||
|
||||
private final AtomicBoolean active = new AtomicBoolean(true);
|
||||
private final AtomicInteger callCount = new AtomicInteger(0);
|
||||
|
||||
@Override
|
||||
public boolean isActive() {
|
||||
return active.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean unregister() {
|
||||
// already unregistered
|
||||
if (!active.getAndSet(false)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
eventBus.unregisterHandler(this);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getCallCount() {
|
||||
return callCount.get();
|
||||
}
|
||||
|
||||
void handle(LuckPermsEvent event) {
|
||||
try {
|
||||
T t = (T) event;
|
||||
consumer.accept(t);
|
||||
callCount.incrementAndGet();
|
||||
} catch (Throwable t) {
|
||||
eventBus.getPlugin().getLog().warn("Unable to pass event " + event.getClass().getSimpleName() + " to handler " + consumer.getClass().getName());
|
||||
t.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.sync.ConfigReloadEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@ToString
|
||||
public class EventConfigReload extends AbstractEvent implements ConfigReloadEvent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.group.GroupCreateEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventGroupCreate extends AbstractEvent implements GroupCreateEvent {
|
||||
|
||||
private final Group group;
|
||||
private final CreationCause cause;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.api.event.group.GroupDeleteEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventGroupDelete extends AbstractEvent implements GroupDeleteEvent {
|
||||
|
||||
private final String groupName;
|
||||
private final Set<Node> existingData;
|
||||
private final DeletionCause cause;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.event.group.GroupLoadEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventGroupLoad extends AbstractEvent implements GroupLoadEvent {
|
||||
|
||||
private final Group group;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.group.GroupLoadAllEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@ToString
|
||||
public class EventGroupLoadAll extends AbstractEvent implements GroupLoadAllEvent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.event.log.LogBroadcastEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventLogBroadcast extends AbstractEvent implements LogBroadcastEvent {
|
||||
|
||||
private final AtomicBoolean cancellationState;
|
||||
private final LogEntry entry;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.event.log.LogPublishEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventLogPublish extends AbstractEvent implements LogPublishEvent {
|
||||
|
||||
private final AtomicBoolean cancellationState;
|
||||
private final LogEntry entry;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.PermissionHolder;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.event.node.NodeAddEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventNodeAdd extends AbstractEvent implements NodeAddEvent {
|
||||
|
||||
private final Node node;
|
||||
private final PermissionHolder target;
|
||||
private final Set<Node> dataBefore;
|
||||
private final Set<Node> dataAfter;
|
||||
|
||||
@Override
|
||||
public boolean isUser() {
|
||||
return target instanceof User;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGroup() {
|
||||
return target instanceof Group;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.PermissionHolder;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.event.node.NodeClearEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventNodeClear extends AbstractEvent implements NodeClearEvent {
|
||||
|
||||
private final PermissionHolder target;
|
||||
private final Set<Node> dataBefore;
|
||||
private final Set<Node> dataAfter;
|
||||
|
||||
@Override
|
||||
public boolean isUser() {
|
||||
return target instanceof User;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGroup() {
|
||||
return target instanceof Group;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Group;
|
||||
import me.lucko.luckperms.api.Node;
|
||||
import me.lucko.luckperms.api.PermissionHolder;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.event.node.NodeRemoveEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventNodeRemove extends AbstractEvent implements NodeRemoveEvent {
|
||||
|
||||
private final Node node;
|
||||
private final PermissionHolder target;
|
||||
private final Set<Node> dataBefore;
|
||||
private final Set<Node> dataAfter;
|
||||
|
||||
@Override
|
||||
public boolean isUser() {
|
||||
return target instanceof User;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isGroup() {
|
||||
return target instanceof Group;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.sync.PostSyncEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@ToString
|
||||
public class EventPostSync extends AbstractEvent implements PostSyncEvent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.sync.PreNetworkSyncEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventPreNetworkSync extends AbstractEvent implements PreNetworkSyncEvent {
|
||||
|
||||
private final AtomicBoolean cancellationState;
|
||||
private final UUID syncId;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.sync.PreSyncEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventPreSync extends AbstractEvent implements PreSyncEvent {
|
||||
|
||||
private final AtomicBoolean cancellationState;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.event.track.mutate.TrackAddGroupEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventTrackAddGroup extends AbstractEvent implements TrackAddGroupEvent {
|
||||
|
||||
private final String group;
|
||||
private final Track track;
|
||||
private final List<String> dataBefore;
|
||||
private final List<String> dataAfter;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.event.track.mutate.TrackClearEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventTrackClear extends AbstractEvent implements TrackClearEvent {
|
||||
|
||||
private final Track track;
|
||||
private final List<String> dataBefore;
|
||||
private final List<String> dataAfter;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.track.TrackCreateEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventTrackCreate extends AbstractEvent implements TrackCreateEvent {
|
||||
|
||||
private final Track track;
|
||||
private final CreationCause cause;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.api.event.track.TrackDeleteEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventTrackDelete extends AbstractEvent implements TrackDeleteEvent {
|
||||
|
||||
private final String trackName;
|
||||
private final List<String> existingData;
|
||||
private final DeletionCause cause;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.event.track.TrackLoadEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventTrackLoad extends AbstractEvent implements TrackLoadEvent {
|
||||
|
||||
private final Track track;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.track.TrackLoadAllEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@ToString
|
||||
public class EventTrackLoadAll extends AbstractEvent implements TrackLoadAllEvent {
|
||||
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.event.track.mutate.TrackRemoveGroupEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventTrackRemoveGroup extends AbstractEvent implements TrackRemoveGroupEvent {
|
||||
|
||||
private final String group;
|
||||
private final Track track;
|
||||
private final List<String> dataBefore;
|
||||
private final List<String> dataAfter;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.caching.UserData;
|
||||
import me.lucko.luckperms.api.event.user.UserCacheLoadEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventUserCacheLoad extends AbstractEvent implements UserCacheLoadEvent {
|
||||
|
||||
private final User user;
|
||||
private final UserData loadedData;
|
||||
|
||||
}
|
||||
+42
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.caching.UserData;
|
||||
import me.lucko.luckperms.api.event.user.UserDataRecalculateEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventUserDataRecalculate extends AbstractEvent implements UserDataRecalculateEvent {
|
||||
|
||||
private final User user;
|
||||
private final UserData data;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.event.user.track.TrackAction;
|
||||
import me.lucko.luckperms.api.event.user.track.UserDemoteEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventUserDemote extends AbstractEvent implements UserDemoteEvent {
|
||||
|
||||
@Getter
|
||||
private final Track track;
|
||||
@Getter
|
||||
private final User user;
|
||||
|
||||
private final String groupFrom;
|
||||
private final String groupTo;
|
||||
|
||||
@Override
|
||||
public TrackAction getAction() {
|
||||
return TrackAction.DEMOTION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<String> getGroupFrom() {
|
||||
return Optional.ofNullable(groupFrom);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<String> getGroupTo() {
|
||||
return Optional.ofNullable(groupTo);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.event.user.UserFirstLoginEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventUserFirstLogin extends AbstractEvent implements UserFirstLoginEvent {
|
||||
|
||||
private final UUID uuid;
|
||||
private final String username;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.event.user.UserLoadEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
@Getter
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventUserLoad extends AbstractEvent implements UserLoadEvent {
|
||||
|
||||
private final User user;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,64 @@
|
||||
/*
|
||||
* Copyright (c) 2016 Lucko (Luck) <luck@lucko.me>
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
|
||||
package me.lucko.luckperms.common.event.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Getter;
|
||||
import lombok.ToString;
|
||||
|
||||
import me.lucko.luckperms.api.Track;
|
||||
import me.lucko.luckperms.api.User;
|
||||
import me.lucko.luckperms.api.event.user.track.TrackAction;
|
||||
import me.lucko.luckperms.api.event.user.track.UserPromoteEvent;
|
||||
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
@ToString
|
||||
@AllArgsConstructor
|
||||
public class EventUserPromote extends AbstractEvent implements UserPromoteEvent {
|
||||
|
||||
@Getter
|
||||
private final Track track;
|
||||
@Getter
|
||||
private final User user;
|
||||
|
||||
private final String groupFrom;
|
||||
private final String groupTo;
|
||||
|
||||
@Override
|
||||
public TrackAction getAction() {
|
||||
return TrackAction.PROMOTION;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<String> getGroupFrom() {
|
||||
return Optional.ofNullable(groupFrom);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Optional<String> getGroupTo() {
|
||||
return Optional.ofNullable(groupTo);
|
||||
}
|
||||
|
||||
}
|
||||
+6
-1
@@ -22,15 +22,20 @@
|
||||
|
||||
package me.lucko.luckperms.common.managers.impl;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import me.lucko.luckperms.common.core.model.Track;
|
||||
import me.lucko.luckperms.common.managers.AbstractManager;
|
||||
import me.lucko.luckperms.common.managers.TrackManager;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
|
||||
@AllArgsConstructor
|
||||
public class GenericTrackManager extends AbstractManager<String, Track> implements TrackManager {
|
||||
private final LuckPermsPlugin plugin;
|
||||
|
||||
@Override
|
||||
public Track apply(String name) {
|
||||
return new Track(name);
|
||||
return new Track(name, plugin);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -64,6 +64,11 @@ public abstract class AbstractMessagingService implements InternalMessagingServi
|
||||
}
|
||||
|
||||
plugin.getLog().info("[" + name + " Messaging] Received update ping with id: " + uuid.toString());
|
||||
|
||||
if (plugin.getApiProvider().getEventFactory().handleNetworkPreSync(false, uuid)) {
|
||||
return;
|
||||
}
|
||||
|
||||
plugin.getUpdateTaskBuffer().request();
|
||||
|
||||
if (callback != null) {
|
||||
|
||||
@@ -23,11 +23,15 @@
|
||||
package me.lucko.luckperms.common.storage;
|
||||
|
||||
import lombok.AccessLevel;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.experimental.Delegate;
|
||||
|
||||
import me.lucko.luckperms.api.HeldPermission;
|
||||
import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.api.delegates.StorageDelegate;
|
||||
import me.lucko.luckperms.common.core.model.Group;
|
||||
import me.lucko.luckperms.common.core.model.Track;
|
||||
import me.lucko.luckperms.common.core.model.User;
|
||||
@@ -49,14 +53,25 @@ import java.util.function.Supplier;
|
||||
@RequiredArgsConstructor(access = AccessLevel.PRIVATE)
|
||||
public class AbstractStorage implements Storage {
|
||||
public static Storage wrap(LuckPermsPlugin plugin, AbstractBacking backing) {
|
||||
BufferedOutputStorage bufferedDs = BufferedOutputStorage.wrap(TolerantStorage.wrap(new AbstractStorage(backing)), 1000L);
|
||||
BufferedOutputStorage bufferedDs = BufferedOutputStorage.wrap(TolerantStorage.wrap(new AbstractStorage(plugin, backing)), 1000L);
|
||||
plugin.getScheduler().doAsyncRepeating(bufferedDs, 10L);
|
||||
return bufferedDs;
|
||||
}
|
||||
|
||||
private final LuckPermsPlugin plugin;
|
||||
|
||||
@Delegate(types = Delegated.class)
|
||||
private final AbstractBacking backing;
|
||||
|
||||
@Getter
|
||||
private final StorageDelegate delegate;
|
||||
|
||||
private AbstractStorage(LuckPermsPlugin plugin, AbstractBacking backing) {
|
||||
this.plugin = plugin;
|
||||
this.backing = backing;
|
||||
this.delegate = new StorageDelegate(plugin, this);
|
||||
}
|
||||
|
||||
private <T> CompletableFuture<T> makeFuture(Supplier<T> supplier) {
|
||||
return CompletableFuture.supplyAsync(supplier, backing.getPlugin().getScheduler().getAsyncExecutor());
|
||||
}
|
||||
@@ -78,7 +93,13 @@ public class AbstractStorage implements Storage {
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> loadUser(UUID uuid, String username) {
|
||||
return makeFuture(() -> backing.loadUser(uuid, username));
|
||||
return makeFuture(() -> {
|
||||
if (backing.loadUser(uuid, username)) {
|
||||
plugin.getApiProvider().getEventFactory().handleUserLoad(plugin.getUserManager().get(uuid));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -102,18 +123,36 @@ public class AbstractStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> createAndLoadGroup(String name) {
|
||||
return makeFuture(() -> backing.createAndLoadGroup(name));
|
||||
public CompletableFuture<Boolean> createAndLoadGroup(String name, CreationCause cause) {
|
||||
return makeFuture(() -> {
|
||||
if (backing.createAndLoadGroup(name)) {
|
||||
plugin.getApiProvider().getEventFactory().handleGroupCreate(plugin.getGroupManager().getIfLoaded(name), cause);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> loadGroup(String name) {
|
||||
return makeFuture(() -> backing.loadGroup(name));
|
||||
return makeFuture(() -> {
|
||||
if (backing.loadGroup(name)) {
|
||||
plugin.getApiProvider().getEventFactory().handleGroupLoad(plugin.getGroupManager().getIfLoaded(name));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> loadAllGroups() {
|
||||
return makeFuture(backing::loadAllGroups);
|
||||
return makeFuture(() -> {
|
||||
if (backing.loadAllGroups()) {
|
||||
plugin.getApiProvider().getEventFactory().handleGroupLoadAll();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -122,8 +161,14 @@ public class AbstractStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> deleteGroup(Group group) {
|
||||
return makeFuture(() -> backing.deleteGroup(group));
|
||||
public CompletableFuture<Boolean> deleteGroup(Group group, DeletionCause cause) {
|
||||
return makeFuture(() -> {
|
||||
if (backing.deleteGroup(group)) {
|
||||
plugin.getApiProvider().getEventFactory().handleGroupDelete(group, cause);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -132,18 +177,36 @@ public class AbstractStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> createAndLoadTrack(String name) {
|
||||
return makeFuture(() -> backing.createAndLoadTrack(name));
|
||||
public CompletableFuture<Boolean> createAndLoadTrack(String name, CreationCause cause) {
|
||||
return makeFuture(() -> {
|
||||
if (backing.createAndLoadTrack(name)) {
|
||||
plugin.getApiProvider().getEventFactory().handleTrackCreate(plugin.getTrackManager().getIfLoaded(name), cause);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> loadTrack(String name) {
|
||||
return makeFuture(() -> backing.loadTrack(name));
|
||||
return makeFuture(() -> {
|
||||
if (backing.loadTrack(name)) {
|
||||
plugin.getApiProvider().getEventFactory().handleTrackLoad(plugin.getTrackManager().getIfLoaded(name));
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> loadAllTracks() {
|
||||
return makeFuture(backing::loadAllTracks);
|
||||
return makeFuture(() -> {
|
||||
if (backing.loadAllTracks()) {
|
||||
plugin.getApiProvider().getEventFactory().handleTrackLoadAll();
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -152,8 +215,14 @@ public class AbstractStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> deleteTrack(Track track) {
|
||||
return makeFuture(() -> backing.deleteTrack(track));
|
||||
public CompletableFuture<Boolean> deleteTrack(Track track, DeletionCause cause) {
|
||||
return makeFuture(() -> {
|
||||
if (backing.deleteTrack(track)) {
|
||||
plugin.getApiProvider().getEventFactory().handleTrackDelete(track, cause);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -24,6 +24,9 @@ package me.lucko.luckperms.common.storage;
|
||||
|
||||
import me.lucko.luckperms.api.HeldPermission;
|
||||
import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.api.delegates.StorageDelegate;
|
||||
import me.lucko.luckperms.common.core.model.Group;
|
||||
import me.lucko.luckperms.common.core.model.Track;
|
||||
import me.lucko.luckperms.common.core.model.User;
|
||||
@@ -39,6 +42,8 @@ import java.util.concurrent.CompletableFuture;
|
||||
*/
|
||||
public interface Storage {
|
||||
|
||||
StorageDelegate getDelegate();
|
||||
|
||||
String getName();
|
||||
|
||||
boolean isAcceptingLogins();
|
||||
@@ -65,7 +70,7 @@ public interface Storage {
|
||||
|
||||
CompletableFuture<List<HeldPermission<UUID>>> getUsersWithPermission(String permission);
|
||||
|
||||
CompletableFuture<Boolean> createAndLoadGroup(String name);
|
||||
CompletableFuture<Boolean> createAndLoadGroup(String name, CreationCause cause);
|
||||
|
||||
CompletableFuture<Boolean> loadGroup(String name);
|
||||
|
||||
@@ -73,11 +78,11 @@ public interface Storage {
|
||||
|
||||
CompletableFuture<Boolean> saveGroup(Group group);
|
||||
|
||||
CompletableFuture<Boolean> deleteGroup(Group group);
|
||||
CompletableFuture<Boolean> deleteGroup(Group group, DeletionCause cause);
|
||||
|
||||
CompletableFuture<List<HeldPermission<String>>> getGroupsWithPermission(String permission);
|
||||
|
||||
CompletableFuture<Boolean> createAndLoadTrack(String name);
|
||||
CompletableFuture<Boolean> createAndLoadTrack(String name, CreationCause cause);
|
||||
|
||||
CompletableFuture<Boolean> loadTrack(String name);
|
||||
|
||||
@@ -85,7 +90,7 @@ public interface Storage {
|
||||
|
||||
CompletableFuture<Boolean> saveTrack(Track track);
|
||||
|
||||
CompletableFuture<Boolean> deleteTrack(Track track);
|
||||
CompletableFuture<Boolean> deleteTrack(Track track, DeletionCause cause);
|
||||
|
||||
CompletableFuture<Boolean> saveUUIDData(String username, UUID uuid);
|
||||
|
||||
|
||||
+12
-8
@@ -28,6 +28,9 @@ import lombok.experimental.Delegate;
|
||||
|
||||
import me.lucko.luckperms.api.HeldPermission;
|
||||
import me.lucko.luckperms.api.LogEntry;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.api.event.cause.DeletionCause;
|
||||
import me.lucko.luckperms.common.api.delegates.StorageDelegate;
|
||||
import me.lucko.luckperms.common.core.model.Group;
|
||||
import me.lucko.luckperms.common.core.model.Track;
|
||||
import me.lucko.luckperms.common.core.model.User;
|
||||
@@ -144,10 +147,10 @@ public class TolerantStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> createAndLoadGroup(String name) {
|
||||
public CompletableFuture<Boolean> createAndLoadGroup(String name, CreationCause cause) {
|
||||
phaser.register();
|
||||
try {
|
||||
return backing.createAndLoadGroup(name);
|
||||
return backing.createAndLoadGroup(name, cause);
|
||||
} finally {
|
||||
phaser.arriveAndDeregister();
|
||||
}
|
||||
@@ -184,10 +187,10 @@ public class TolerantStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> deleteGroup(Group group) {
|
||||
public CompletableFuture<Boolean> deleteGroup(Group group, DeletionCause cause) {
|
||||
phaser.register();
|
||||
try {
|
||||
return backing.deleteGroup(group);
|
||||
return backing.deleteGroup(group, cause);
|
||||
} finally {
|
||||
phaser.arriveAndDeregister();
|
||||
}
|
||||
@@ -204,10 +207,10 @@ public class TolerantStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> createAndLoadTrack(String name) {
|
||||
public CompletableFuture<Boolean> createAndLoadTrack(String name, CreationCause cause) {
|
||||
phaser.register();
|
||||
try {
|
||||
return backing.createAndLoadTrack(name);
|
||||
return backing.createAndLoadTrack(name, cause);
|
||||
} finally {
|
||||
phaser.arriveAndDeregister();
|
||||
}
|
||||
@@ -244,10 +247,10 @@ public class TolerantStorage implements Storage {
|
||||
}
|
||||
|
||||
@Override
|
||||
public CompletableFuture<Boolean> deleteTrack(Track track) {
|
||||
public CompletableFuture<Boolean> deleteTrack(Track track, DeletionCause cause) {
|
||||
phaser.register();
|
||||
try {
|
||||
return backing.deleteTrack(track);
|
||||
return backing.deleteTrack(track, cause);
|
||||
} finally {
|
||||
phaser.arriveAndDeregister();
|
||||
}
|
||||
@@ -284,6 +287,7 @@ public class TolerantStorage implements Storage {
|
||||
}
|
||||
|
||||
private interface Delegated {
|
||||
StorageDelegate getDelegate();
|
||||
String getName();
|
||||
boolean isAcceptingLogins();
|
||||
void setAcceptingLogins(boolean b);
|
||||
|
||||
@@ -24,8 +24,7 @@ package me.lucko.luckperms.common.tasks;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import me.lucko.luckperms.api.event.events.PostSyncEvent;
|
||||
import me.lucko.luckperms.api.event.events.PreSyncEvent;
|
||||
import me.lucko.luckperms.api.event.cause.CreationCause;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.plugin.LuckPermsPlugin;
|
||||
|
||||
@@ -38,15 +37,15 @@ public class UpdateTask implements Runnable {
|
||||
*/
|
||||
@Override
|
||||
public void run() {
|
||||
PreSyncEvent event = new PreSyncEvent();
|
||||
plugin.getApiProvider().fireEvent(event);
|
||||
if (event.isCancelled()) return;
|
||||
if (plugin.getApiProvider().getEventFactory().handlePreSync(false)) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Reload all groups
|
||||
plugin.getStorage().loadAllGroups().join();
|
||||
String defaultGroup = plugin.getConfiguration().get(ConfigKeys.DEFAULT_GROUP_NAME);
|
||||
if (!plugin.getGroupManager().isLoaded(defaultGroup)) {
|
||||
plugin.getStorage().createAndLoadGroup(defaultGroup).join();
|
||||
plugin.getStorage().createAndLoadGroup(defaultGroup, CreationCause.INTERNAL).join();
|
||||
}
|
||||
|
||||
// Reload all tracks
|
||||
@@ -57,6 +56,6 @@ public class UpdateTask implements Runnable {
|
||||
|
||||
plugin.onPostUpdate();
|
||||
|
||||
plugin.getApiProvider().fireEvent(new PostSyncEvent());
|
||||
plugin.getApiProvider().getEventFactory().handlePostSync();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,7 +24,6 @@ package me.lucko.luckperms.common.utils;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
|
||||
import me.lucko.luckperms.api.event.events.UserFirstLoginEvent;
|
||||
import me.lucko.luckperms.common.config.ConfigKeys;
|
||||
import me.lucko.luckperms.common.core.UuidCache;
|
||||
import me.lucko.luckperms.common.core.model.User;
|
||||
@@ -50,14 +49,14 @@ public class AbstractListener {
|
||||
cache.addToCache(u, uuid);
|
||||
} else {
|
||||
// No previous data for this player
|
||||
plugin.getApiProvider().fireEventAsync(new UserFirstLoginEvent(u, username));
|
||||
plugin.getApiProvider().getEventFactory().handleUserFirstLogin(u, username);
|
||||
cache.addToCache(u, u);
|
||||
plugin.getStorage().force().saveUUIDData(username, u);
|
||||
}
|
||||
} else {
|
||||
String name = plugin.getStorage().force().getName(u).join();
|
||||
if (name == null) {
|
||||
plugin.getApiProvider().fireEventAsync(new UserFirstLoginEvent(u, username));
|
||||
plugin.getApiProvider().getEventFactory().handleUserFirstLogin(u, username);
|
||||
}
|
||||
|
||||
// Online mode, no cache needed. This is just for name -> uuid lookup.
|
||||
|
||||
Reference in New Issue
Block a user