mirror of
https://github.com/HibiscusMC/HMCCosmetics.git
synced 2025-12-21 16:09:27 +00:00
feat: add api events relating to loading/unloading users (PlayerLoadEvent, PlayerPreLoadEvent, PlayerUnloadEvent)
This commit is contained in:
@@ -7,10 +7,11 @@ import org.jetbrains.annotations.NotNull;
|
|||||||
/**
|
/**
|
||||||
* Represents a cosmetic user related event
|
* Represents a cosmetic user related event
|
||||||
*/
|
*/
|
||||||
public abstract class PlayerCosmeticEvent extends Event {
|
public abstract class PlayerCosmeticEvent extends PlayerEvent {
|
||||||
protected CosmeticUser user;
|
protected CosmeticUser user;
|
||||||
|
|
||||||
public PlayerCosmeticEvent(@NotNull final CosmeticUser who) {
|
public PlayerCosmeticEvent(@NotNull final CosmeticUser who) {
|
||||||
|
super(who.getUniqueId());
|
||||||
user = who;
|
user = who;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
package com.hibiscusmc.hmccosmetics.api.events;
|
||||||
|
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public abstract class PlayerEvent extends Event {
|
||||||
|
|
||||||
|
protected UUID player;
|
||||||
|
|
||||||
|
public PlayerEvent(@NotNull final UUID uuid) {
|
||||||
|
this.player = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the UUID of the player involved in this event
|
||||||
|
* @return User who is involved in this event
|
||||||
|
*/
|
||||||
|
@NotNull
|
||||||
|
public final UUID getUniqueId() {
|
||||||
|
return player;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package com.hibiscusmc.hmccosmetics.api.events;
|
||||||
|
|
||||||
|
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class PlayerLoadEvent extends PlayerCosmeticEvent {
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public PlayerLoadEvent(@NotNull CosmeticUser who) {
|
||||||
|
super(who);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,43 @@
|
|||||||
|
package com.hibiscusmc.hmccosmetics.api.events;
|
||||||
|
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called before a player is loaded into the plugin (including before the plugin gets their data).
|
||||||
|
* This event is cancellable, and if cancelled, the player will not be loaded into the plugin.
|
||||||
|
*/
|
||||||
|
public class PlayerPreLoadEvent extends PlayerEvent implements Cancellable {
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
private boolean cancelled = false;
|
||||||
|
|
||||||
|
public PlayerPreLoadEvent(@NotNull UUID id) {
|
||||||
|
super(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
package com.hibiscusmc.hmccosmetics.api.events;
|
||||||
|
|
||||||
|
import com.hibiscusmc.hmccosmetics.user.CosmeticUser;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class PlayerUnloadEvent extends PlayerCosmeticEvent {
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
public PlayerUnloadEvent(@NotNull CosmeticUser who) {
|
||||||
|
super(who);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
@NotNull
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
package com.hibiscusmc.hmccosmetics.listener;
|
package com.hibiscusmc.hmccosmetics.listener;
|
||||||
|
|
||||||
import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin;
|
import com.hibiscusmc.hmccosmetics.HMCCosmeticsPlugin;
|
||||||
|
import com.hibiscusmc.hmccosmetics.api.events.PlayerLoadEvent;
|
||||||
|
import com.hibiscusmc.hmccosmetics.api.events.PlayerPreLoadEvent;
|
||||||
|
import com.hibiscusmc.hmccosmetics.api.events.PlayerUnloadEvent;
|
||||||
import com.hibiscusmc.hmccosmetics.config.DatabaseSettings;
|
import com.hibiscusmc.hmccosmetics.config.DatabaseSettings;
|
||||||
import com.hibiscusmc.hmccosmetics.config.Settings;
|
import com.hibiscusmc.hmccosmetics.config.Settings;
|
||||||
import com.hibiscusmc.hmccosmetics.database.Database;
|
import com.hibiscusmc.hmccosmetics.database.Database;
|
||||||
@@ -40,6 +43,11 @@ public class PlayerConnectionListener implements Listener {
|
|||||||
Runnable run = () -> {
|
Runnable run = () -> {
|
||||||
if (!event.getPlayer().isOnline()) return; // If a player is no longer online, don't run this.
|
if (!event.getPlayer().isOnline()) return; // If a player is no longer online, don't run this.
|
||||||
UUID uuid = event.getPlayer().getUniqueId();
|
UUID uuid = event.getPlayer().getUniqueId();
|
||||||
|
|
||||||
|
PlayerPreLoadEvent preLoadEvent = new PlayerPreLoadEvent(uuid);
|
||||||
|
Bukkit.getPluginManager().callEvent(preLoadEvent);
|
||||||
|
if (preLoadEvent.isCancelled()) return;
|
||||||
|
|
||||||
Database.get(uuid).thenAccept(data -> {
|
Database.get(uuid).thenAccept(data -> {
|
||||||
if (data == null) return;
|
if (data == null) return;
|
||||||
Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> {
|
Bukkit.getScheduler().runTask(HMCCosmeticsPlugin.getInstance(), () -> {
|
||||||
@@ -47,6 +55,9 @@ public class PlayerConnectionListener implements Listener {
|
|||||||
CosmeticUsers.addUser(cosmeticUser);
|
CosmeticUsers.addUser(cosmeticUser);
|
||||||
MessagesUtil.sendDebugMessages("Run User Join for " + uuid);
|
MessagesUtil.sendDebugMessages("Run User Join for " + uuid);
|
||||||
|
|
||||||
|
PlayerLoadEvent playerLoadEvent = new PlayerLoadEvent(cosmeticUser);
|
||||||
|
Bukkit.getPluginManager().callEvent(playerLoadEvent);
|
||||||
|
|
||||||
// And finally, launch an update for the cosmetics they have.
|
// And finally, launch an update for the cosmetics they have.
|
||||||
Bukkit.getScheduler().runTaskLater(HMCCosmeticsPlugin.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLater(HMCCosmeticsPlugin.getInstance(), () -> {
|
||||||
if (cosmeticUser.getPlayer() == null) return;
|
if (cosmeticUser.getPlayer() == null) return;
|
||||||
@@ -68,6 +79,10 @@ public class PlayerConnectionListener implements Listener {
|
|||||||
public void onPlayerQuit(@NotNull PlayerQuitEvent event) {
|
public void onPlayerQuit(@NotNull PlayerQuitEvent event) {
|
||||||
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
CosmeticUser user = CosmeticUsers.getUser(event.getPlayer());
|
||||||
if (user == null) return; // Player never initialized, don't do anything
|
if (user == null) return; // Player never initialized, don't do anything
|
||||||
|
|
||||||
|
PlayerUnloadEvent playerUnloadEvent = new PlayerUnloadEvent(user);
|
||||||
|
Bukkit.getPluginManager().callEvent(playerUnloadEvent);
|
||||||
|
|
||||||
if (user.isInWardrobe()) {
|
if (user.isInWardrobe()) {
|
||||||
user.leaveWardrobe(true);
|
user.leaveWardrobe(true);
|
||||||
user.getPlayer().setInvisible(false);
|
user.getPlayer().setInvisible(false);
|
||||||
|
|||||||
Reference in New Issue
Block a user