From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: violetc <58360096+s-yh-china@users.noreply.github.com> Date: Wed, 27 Jul 2022 15:30:34 +0800 Subject: [PATCH] Add fakeplayer api diff --git a/src/main/java/top/leavesmc/leaves/entity/Bot.java b/src/main/java/top/leavesmc/leaves/entity/Bot.java new file mode 100644 index 0000000000000000000000000000000000000000..d4afe549b5e1aba7d468450c5e1570d2e0c0a1f3 --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/entity/Bot.java @@ -0,0 +1,9 @@ +package top.leavesmc.leaves.entity; + +import org.bukkit.entity.Player; + +/** + * Represents a fakeplayer + */ +public interface Bot extends Player { +} diff --git a/src/main/java/top/leavesmc/leaves/event/bot/BotCreateEvent.java b/src/main/java/top/leavesmc/leaves/event/bot/BotCreateEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..9424a0b82ebfedd571e759db4f41d51364ad0b88 --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/event/bot/BotCreateEvent.java @@ -0,0 +1,84 @@ +package top.leavesmc.leaves.event.bot; + +import org.bukkit.Location; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import top.leavesmc.leaves.entity.Bot; + +/** + * Call when a fakeplayer creates a server + */ +public class BotCreateEvent extends BotEvent implements Cancellable { + private static final HandlerList handlers = new HandlerList(); + + private String joinMessage; + private Location createLocation; + private boolean cancel = false; + + public BotCreateEvent(@NotNull final Bot who, @NotNull final Location createLocation, @Nullable final String joinMessage) { + super(who); + this.joinMessage = joinMessage; + this.createLocation = createLocation; + } + + /** + * Gets the join message to send to all online players + * + * @return string join message. Can be null + */ + @Nullable + public String getJoinMessage() { + return joinMessage; + } + + /** + * Sets the join message to send to all online players + * + * @param joinMessage join message. If null, no message will be sent + */ + public void setJoinMessage(@Nullable String joinMessage) { + this.joinMessage = joinMessage; + } + + /** + * Gets the location to create the fakeplayer + * + * @return Location to create the fakeplayer + */ + @NotNull + public Location getCreateLocation() { + return createLocation; + } + + /** + * Sets the location to create the fakeplayer + * + * @param createLocation location to create the fakeplyer + */ + public void setCreateLocation(@NotNull Location createLocation) { + this.createLocation = createLocation; + } + + @Override + public boolean isCancelled() { + return cancel; + } + + @Override + public void setCancelled(boolean cancel) { + this.cancel = cancel; + } + + @Override + @NotNull + public HandlerList getHandlers() { + return handlers; + } + + @NotNull + public static HandlerList getHandlerList() { + return handlers; + } +} diff --git a/src/main/java/top/leavesmc/leaves/event/bot/BotEvent.java b/src/main/java/top/leavesmc/leaves/event/bot/BotEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..4a4fe07ce965d4a97e0d8105a91310dac7d1343c --- /dev/null +++ b/src/main/java/top/leavesmc/leaves/event/bot/BotEvent.java @@ -0,0 +1,31 @@ +package top.leavesmc.leaves.event.bot; + +import org.bukkit.event.Event; +import org.jetbrains.annotations.NotNull; +import top.leavesmc.leaves.entity.Bot; + +/** + * Represents a fakeplayer related event + */ +public abstract class BotEvent extends Event { + protected Bot bot; + + public BotEvent(@NotNull final Bot who) { + bot = who; + } + + public BotEvent(@NotNull final Bot who, boolean async) { // Paper - public + super(async); + bot = who; + } + + /** + * Returns the fakeplayer involved in this event + * + * @return Fakeplayer who is involved in this event + */ + @NotNull + public final Bot getBot() { + return bot; + } +}