Events (#4)
* Refactor island and island player classes to interfaces Refactored the existing Island and IslandPlayer classes to interfaces and created the implementation classes, IslandImpl and IslandPlayerImpl. * Add event handling for player island actions Implemented new event classes for handling player activities related to islands. These include IslandPlayerJoinEvent, IslandPlayerLeaveEvent, IslandPlayerJoinIslandEvent, and IslandPlayerLeaveIslandEvent, facilitating better tracking and handling of player actions on islands for other plugins. * Implement Island interfaces in IslandImpl and IslandPlayerImpl Updated the IslandImpl and IslandPlayerImpl classes to implement the Island and IslandPlayer interfaces respectively. * Refactor IslandPlayer Interface Removed player() method and added islandOwner() method in the IslandPlayer interface. This change reflects way the IslandPlayerImpl currently works. * Implement event triggers for island join/leave and server join/leave events Added triggers for IslandPlayer events in the relevant island management methods. Also, modified IslandPlayerJoinEvent and IslandPlayerLeaveEvent to remove unnecessary references to Island-object. * Reverting in events * Replace interfaces with records in event parameters The commit replaces the usage of interfaces Island and IslandPlayer with record classes in event parameters. It also adds methods to convert instances to respective records in Island and IslandPlayer classes. The interfaces are then removed as they are no longer needed. * Replace interfaces with records in event parameters The commit replaces the usage of interfaces Island and IslandPlayer with record classes in event parameters. It also adds methods to convert instances to respective records in Island and IslandPlayer classes. The interfaces are then removed as they are no longer needed.
This commit is contained in:
parent
69cd686d04
commit
4b2cadb419
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.alttd.cometskyblock.events;
|
||||||
|
|
||||||
|
import com.alttd.cometskyblock.records.IslandPlayerRecord;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class IslandPlayerJoinEvent extends Event {
|
||||||
|
|
||||||
|
private final IslandPlayerRecord islandPlayer;
|
||||||
|
private final HandlerList handlerList;
|
||||||
|
|
||||||
|
public IslandPlayerJoinEvent(IslandPlayerRecord islandPlayer) {
|
||||||
|
this.islandPlayer = islandPlayer;
|
||||||
|
handlerList = new HandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IslandPlayerRecord getIslandPlayer() {
|
||||||
|
return islandPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull HandlerList getHandlers() {
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
package com.alttd.cometskyblock.events;
|
||||||
|
|
||||||
|
import com.alttd.cometskyblock.records.IslandRecord;
|
||||||
|
import com.alttd.cometskyblock.records.IslandPlayerRecord;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class IslandPlayerJoinIslandEvent extends Event {
|
||||||
|
|
||||||
|
private final IslandPlayerRecord islandPlayer;
|
||||||
|
private final IslandRecord island;
|
||||||
|
private final HandlerList handlerList;
|
||||||
|
|
||||||
|
public IslandPlayerJoinIslandEvent(IslandPlayerRecord islandPlayer, IslandRecord island) {
|
||||||
|
this.islandPlayer = islandPlayer;
|
||||||
|
this.island = island;
|
||||||
|
handlerList = new HandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IslandPlayerRecord getIslandPlayer() {
|
||||||
|
return islandPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IslandRecord getIsland() {
|
||||||
|
return island;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull HandlerList getHandlers() {
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
package com.alttd.cometskyblock.events;
|
||||||
|
|
||||||
|
import com.alttd.cometskyblock.records.IslandPlayerRecord;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class IslandPlayerLeaveEvent extends Event {
|
||||||
|
|
||||||
|
private final IslandPlayerRecord islandPlayer;
|
||||||
|
private final HandlerList handlerList;
|
||||||
|
|
||||||
|
public IslandPlayerLeaveEvent(IslandPlayerRecord islandPlayer) {
|
||||||
|
this.islandPlayer = islandPlayer;
|
||||||
|
handlerList = new HandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IslandPlayerRecord getIslandPlayer() {
|
||||||
|
return islandPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull HandlerList getHandlers() {
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package com.alttd.cometskyblock.events;
|
||||||
|
|
||||||
|
import com.alttd.cometskyblock.records.IslandRecord;
|
||||||
|
import com.alttd.cometskyblock.records.IslandPlayerRecord;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
|
||||||
|
public class IslandPlayerLeaveIslandEvent extends Event {
|
||||||
|
|
||||||
|
private final IslandPlayerRecord islandPlayer;
|
||||||
|
private final IslandRecord island;
|
||||||
|
private final HandlerList handlerList;
|
||||||
|
|
||||||
|
public IslandPlayerLeaveIslandEvent(IslandPlayerRecord islandPlayer, IslandRecord island) {
|
||||||
|
this.islandPlayer = islandPlayer;
|
||||||
|
this.island = island;
|
||||||
|
handlerList = new HandlerList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public IslandPlayerRecord getIslandPlayer() {
|
||||||
|
return islandPlayer;
|
||||||
|
}
|
||||||
|
|
||||||
|
public IslandRecord getIsland() {
|
||||||
|
return island;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public @NotNull HandlerList getHandlers() {
|
||||||
|
return handlerList;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package com.alttd.cometskyblock.records;
|
||||||
|
|
||||||
|
import java.util.UUID;
|
||||||
|
|
||||||
|
public record IslandPlayerRecord(boolean islandOwner, int islandId, UUID uuid) {
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
package com.alttd.cometskyblock.records;
|
||||||
|
|
||||||
|
public record IslandRecord(int islandId, String islandName, int islandLevel) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -2,6 +2,7 @@ package com.alttd.cometskyblock.commands.island;
|
||||||
|
|
||||||
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
||||||
import com.alttd.cometskyblock.commands.PlayerSubCommand;
|
import com.alttd.cometskyblock.commands.PlayerSubCommand;
|
||||||
|
import com.alttd.cometskyblock.events.IslandPlayerJoinIslandEvent;
|
||||||
import com.alttd.cometskyblock.island.Island;
|
import com.alttd.cometskyblock.island.Island;
|
||||||
import com.alttd.cometskyblock.island.IslandPlayer;
|
import com.alttd.cometskyblock.island.IslandPlayer;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
|
@ -65,6 +66,7 @@ public class IslandGo extends PlayerSubCommand {
|
||||||
new ItemStack(Material.LAVA_BUCKET),
|
new ItemStack(Material.LAVA_BUCKET),
|
||||||
new ItemStack(Material.WATER_BUCKET)
|
new ItemStack(Material.WATER_BUCKET)
|
||||||
);
|
);
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(new IslandPlayerJoinIslandEvent(islandPlayer.toRecord(), island.toRecord()));
|
||||||
player.teleportAsync(world.getSpawnLocation());
|
player.teleportAsync(world.getSpawnLocation());
|
||||||
});
|
});
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.alttd.cometskyblock.island;
|
package com.alttd.cometskyblock.island;
|
||||||
|
|
||||||
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
||||||
|
import com.alttd.cometskyblock.records.IslandRecord;
|
||||||
import com.alttd.cometskyblock.request.Request;
|
import com.alttd.cometskyblock.request.Request;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
@ -241,4 +242,8 @@ public class Island extends YamlConfiguration {
|
||||||
islandMember.sendMiniMessage(message, placeholder);
|
islandMember.sendMiniMessage(message, placeholder);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IslandRecord toRecord() {
|
||||||
|
return new IslandRecord(islandId(), islandName(), level());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.alttd.cometskyblock.island;
|
package com.alttd.cometskyblock.island;
|
||||||
|
|
||||||
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
||||||
|
import com.alttd.cometskyblock.records.IslandPlayerRecord;
|
||||||
import com.alttd.cometskyblock.request.Request;
|
import com.alttd.cometskyblock.request.Request;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
import lombok.Setter;
|
||||||
|
|
@ -14,6 +15,7 @@ import java.util.UUID;
|
||||||
public class IslandPlayer extends YamlConfiguration {
|
public class IslandPlayer extends YamlConfiguration {
|
||||||
|
|
||||||
private static final Map<UUID, IslandPlayer> configs = new HashMap<>();
|
private static final Map<UUID, IslandPlayer> configs = new HashMap<>();
|
||||||
|
private final UUID playerUUID;
|
||||||
|
|
||||||
public static IslandPlayer getIslandPlayer(UUID uuid) {
|
public static IslandPlayer getIslandPlayer(UUID uuid) {
|
||||||
synchronized (configs) {
|
synchronized (configs) {
|
||||||
|
|
@ -39,6 +41,7 @@ public class IslandPlayer extends YamlConfiguration {
|
||||||
|
|
||||||
private IslandPlayer(UUID uuid) {
|
private IslandPlayer(UUID uuid) {
|
||||||
super();
|
super();
|
||||||
|
this.playerUUID = uuid;
|
||||||
this.file = new File(CometSkyBlockPlugin.instance().getDataFolder(), "PlayerData" + File.separator + uuid + ".yml");
|
this.file = new File(CometSkyBlockPlugin.instance().getDataFolder(), "PlayerData" + File.separator + uuid + ".yml");
|
||||||
reload();
|
reload();
|
||||||
}
|
}
|
||||||
|
|
@ -96,4 +99,7 @@ public class IslandPlayer extends YamlConfiguration {
|
||||||
save();
|
save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public IslandPlayerRecord toRecord() {
|
||||||
|
return new IslandPlayerRecord(islandOwner(), islandId(), playerUUID);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,10 @@
|
||||||
package com.alttd.cometskyblock.listeners;
|
package com.alttd.cometskyblock.listeners;
|
||||||
|
|
||||||
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
||||||
|
import com.alttd.cometskyblock.events.IslandPlayerJoinEvent;
|
||||||
import com.alttd.cometskyblock.island.Island;
|
import com.alttd.cometskyblock.island.Island;
|
||||||
import com.alttd.cometskyblock.island.IslandPlayer;
|
import com.alttd.cometskyblock.island.IslandPlayer;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
|
|
@ -27,6 +28,7 @@ public class PlayerJoinListener implements Listener {
|
||||||
if (islandPlayer.islandId() == 0) {
|
if (islandPlayer.islandId() == 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(new IslandPlayerJoinEvent(islandPlayer.toRecord()));
|
||||||
if (!player.getWorld().getUID().equals(islandPlayer.islandUUID()))
|
if (!player.getWorld().getUID().equals(islandPlayer.islandUUID()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,34 @@
|
||||||
|
package com.alttd.cometskyblock.listeners;
|
||||||
|
|
||||||
|
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
||||||
|
import com.alttd.cometskyblock.events.IslandPlayerJoinEvent;
|
||||||
|
import com.alttd.cometskyblock.events.IslandPlayerLeaveEvent;
|
||||||
|
import com.alttd.cometskyblock.island.IslandPlayer;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.player.PlayerJoinEvent;
|
||||||
|
|
||||||
|
public class PlayerLeaveListener implements Listener {
|
||||||
|
|
||||||
|
private final CometSkyBlockPlugin plugin;
|
||||||
|
public PlayerLeaveListener(CometSkyBlockPlugin plugin) {
|
||||||
|
this.plugin = plugin;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(ignoreCancelled = true)
|
||||||
|
public void onPlayerJoinEvent(PlayerJoinEvent event) {
|
||||||
|
Player player = event.getPlayer();
|
||||||
|
|
||||||
|
if (!player.hasPlayedBefore())
|
||||||
|
return;
|
||||||
|
|
||||||
|
IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(player.getUniqueId());
|
||||||
|
if (islandPlayer.islandId() == 0) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(new IslandPlayerLeaveEvent(islandPlayer.toRecord()));
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
package com.alttd.cometskyblock.request;
|
package com.alttd.cometskyblock.request;
|
||||||
|
|
||||||
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
||||||
|
import com.alttd.cometskyblock.events.IslandPlayerJoinIslandEvent;
|
||||||
import com.alttd.cometskyblock.island.Island;
|
import com.alttd.cometskyblock.island.Island;
|
||||||
import com.alttd.cometskyblock.island.IslandPlayer;
|
import com.alttd.cometskyblock.island.IslandPlayer;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
public class InviteRequest extends Request {
|
public class InviteRequest extends Request {
|
||||||
|
|
@ -31,6 +33,7 @@ public class InviteRequest extends Request {
|
||||||
IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(requester().getUniqueId());
|
IslandPlayer islandPlayer = IslandPlayer.getIslandPlayer(requester().getUniqueId());
|
||||||
Island island = Island.getIsland(islandPlayer.islandUUID());
|
Island island = Island.getIsland(islandPlayer.islandUUID());
|
||||||
island.addMember(target().getUniqueId());
|
island.addMember(target().getUniqueId());
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(new IslandPlayerJoinIslandEvent(islandPlayer.toRecord(), island.toRecord()));
|
||||||
super.accept();
|
super.accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.alttd.cometskyblock.request;
|
package com.alttd.cometskyblock.request;
|
||||||
|
|
||||||
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
import com.alttd.cometskyblock.CometSkyBlockPlugin;
|
||||||
|
import com.alttd.cometskyblock.events.IslandPlayerLeaveIslandEvent;
|
||||||
import com.alttd.cometskyblock.island.Island;
|
import com.alttd.cometskyblock.island.Island;
|
||||||
import com.alttd.cometskyblock.island.IslandData;
|
import com.alttd.cometskyblock.island.IslandData;
|
||||||
import com.alttd.cometskyblock.island.IslandPlayer;
|
import com.alttd.cometskyblock.island.IslandPlayer;
|
||||||
|
|
@ -35,6 +36,7 @@ public class LeaveRequest extends Request {
|
||||||
World world = Bukkit.getWorlds().get(0);
|
World world = Bukkit.getWorlds().get(0);
|
||||||
Location spawnLocation = world.getSpawnLocation();
|
Location spawnLocation = world.getSpawnLocation();
|
||||||
requester().teleport(spawnLocation);
|
requester().teleport(spawnLocation);
|
||||||
|
Bukkit.getServer().getPluginManager().callEvent(new IslandPlayerLeaveIslandEvent(islandPlayer.toRecord(), island.toRecord()));
|
||||||
super.accept();
|
super.accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user