Add PlayerDataSaveEvent
This commit is contained in:
parent
64838708ab
commit
51f215b8ac
@ -0,0 +1,69 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of LuckPerms, licensed under the MIT License.
|
||||||
|
*
|
||||||
|
* Copyright (c) lucko (Luck) <luck@lucko.me>
|
||||||
|
* Copyright (c) contributors
|
||||||
|
*
|
||||||
|
* 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.api.event.player;
|
||||||
|
|
||||||
|
import me.lucko.luckperms.api.PlayerSaveResult;
|
||||||
|
import me.lucko.luckperms.api.event.LuckPermsEvent;
|
||||||
|
import me.lucko.luckperms.api.manager.UserManager;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when player data is saved to the storage.
|
||||||
|
*
|
||||||
|
* <p>Data can be saved using {@link UserManager#savePlayerData(UUID, String)}.</p>
|
||||||
|
*
|
||||||
|
* @since 4.3
|
||||||
|
*/
|
||||||
|
public interface PlayerDataSaveEvent extends LuckPermsEvent {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the unique ID that was saved.
|
||||||
|
*
|
||||||
|
* @return the uuid
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
UUID getUuid();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the username that was saved.
|
||||||
|
*
|
||||||
|
* @return the username
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
String getUsername();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the result of the operation.
|
||||||
|
*
|
||||||
|
* @return the result
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
PlayerSaveResult getResult();
|
||||||
|
|
||||||
|
}
|
@ -32,7 +32,7 @@ import me.lucko.luckperms.api.event.LuckPermsEvent;
|
|||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a users {@link me.lucko.luckperms.api.caching.UserData} is loaded.
|
* Called when a users {@link UserData} is loaded.
|
||||||
*/
|
*/
|
||||||
public interface UserCacheLoadEvent extends LuckPermsEvent {
|
public interface UserCacheLoadEvent extends LuckPermsEvent {
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ import com.google.common.collect.ImmutableSet;
|
|||||||
|
|
||||||
import me.lucko.luckperms.api.LogEntry;
|
import me.lucko.luckperms.api.LogEntry;
|
||||||
import me.lucko.luckperms.api.Node;
|
import me.lucko.luckperms.api.Node;
|
||||||
|
import me.lucko.luckperms.api.PlayerSaveResult;
|
||||||
import me.lucko.luckperms.api.caching.GroupData;
|
import me.lucko.luckperms.api.caching.GroupData;
|
||||||
import me.lucko.luckperms.api.caching.UserData;
|
import me.lucko.luckperms.api.caching.UserData;
|
||||||
import me.lucko.luckperms.api.event.LuckPermsEvent;
|
import me.lucko.luckperms.api.event.LuckPermsEvent;
|
||||||
@ -55,6 +56,7 @@ import me.lucko.luckperms.common.event.impl.EventLogReceive;
|
|||||||
import me.lucko.luckperms.common.event.impl.EventNodeAdd;
|
import me.lucko.luckperms.common.event.impl.EventNodeAdd;
|
||||||
import me.lucko.luckperms.common.event.impl.EventNodeClear;
|
import me.lucko.luckperms.common.event.impl.EventNodeClear;
|
||||||
import me.lucko.luckperms.common.event.impl.EventNodeRemove;
|
import me.lucko.luckperms.common.event.impl.EventNodeRemove;
|
||||||
|
import me.lucko.luckperms.common.event.impl.EventPlayerDataSave;
|
||||||
import me.lucko.luckperms.common.event.impl.EventPostSync;
|
import me.lucko.luckperms.common.event.impl.EventPostSync;
|
||||||
import me.lucko.luckperms.common.event.impl.EventPreNetworkSync;
|
import me.lucko.luckperms.common.event.impl.EventPreNetworkSync;
|
||||||
import me.lucko.luckperms.common.event.impl.EventPreSync;
|
import me.lucko.luckperms.common.event.impl.EventPreSync;
|
||||||
@ -261,6 +263,11 @@ public final class EventFactory {
|
|||||||
fireEventAsync(event);
|
fireEventAsync(event);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void handlePlayerDataSave(UUID uuid, String username, PlayerSaveResult result) {
|
||||||
|
EventPlayerDataSave event = new EventPlayerDataSave(uuid, username, result);
|
||||||
|
fireEventAsync(event);
|
||||||
|
}
|
||||||
|
|
||||||
public void handleUserLoad(User user) {
|
public void handleUserLoad(User user) {
|
||||||
EventUserLoad event = new EventUserLoad(new ApiUser(user));
|
EventUserLoad event = new EventUserLoad(new ApiUser(user));
|
||||||
fireEventAsync(event);
|
fireEventAsync(event);
|
||||||
|
@ -0,0 +1,72 @@
|
|||||||
|
/*
|
||||||
|
* This file is part of LuckPerms, licensed under the MIT License.
|
||||||
|
*
|
||||||
|
* Copyright (c) lucko (Luck) <luck@lucko.me>
|
||||||
|
* Copyright (c) contributors
|
||||||
|
*
|
||||||
|
* 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 me.lucko.luckperms.api.PlayerSaveResult;
|
||||||
|
import me.lucko.luckperms.api.event.player.PlayerDataSaveEvent;
|
||||||
|
import me.lucko.luckperms.common.event.AbstractEvent;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
public class EventPlayerDataSave extends AbstractEvent implements PlayerDataSaveEvent {
|
||||||
|
private final UUID uuid;
|
||||||
|
private final String username;
|
||||||
|
private final PlayerSaveResult result;
|
||||||
|
|
||||||
|
public EventPlayerDataSave(UUID uuid, String username, PlayerSaveResult result) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
this.username = username;
|
||||||
|
this.result = result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public UUID getUuid() {
|
||||||
|
return this.uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public String getUsername() {
|
||||||
|
return this.username;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
@Override
|
||||||
|
public PlayerSaveResult getResult() {
|
||||||
|
return this.result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PlayerDataSaveEvent(" +
|
||||||
|
"uuid=" + this.uuid + ", " +
|
||||||
|
"username=" + this.username + ", " +
|
||||||
|
"result=" + this.result + ")";
|
||||||
|
}
|
||||||
|
}
|
@ -283,7 +283,13 @@ public class AbstractStorage implements Storage {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CompletableFuture<PlayerSaveResult> savePlayerData(UUID uuid, String username) {
|
public CompletableFuture<PlayerSaveResult> savePlayerData(UUID uuid, String username) {
|
||||||
return makeFuture(() -> this.dao.savePlayerData(uuid, username));
|
return makeFuture(() -> {
|
||||||
|
PlayerSaveResult result = this.dao.savePlayerData(uuid, username);
|
||||||
|
if (result != null) {
|
||||||
|
this.plugin.getEventFactory().handlePlayerDataSave(uuid, username, result);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -132,4 +132,9 @@ public final class PlayerSaveResultImpl implements PlayerSaveResult {
|
|||||||
public int hashCode() {
|
public int hashCode() {
|
||||||
return Objects.hash(this.status, this.oldUsername, this.otherUuids);
|
return Objects.hash(this.status, this.oldUsername, this.otherUuids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "PlayerSaveResult(status=" + this.status + ", oldUsername=" + this.oldUsername + ", otherUuids=" + this.otherUuids + ")";
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user