* 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:
Stijn 2024-02-19 03:52:17 +01:00 committed by GitHub
parent 69cd686d04
commit 4b2cadb419
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
13 changed files with 187 additions and 1 deletions

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}

View File

@ -0,0 +1,6 @@
package com.alttd.cometskyblock.records;
import java.util.UUID;
public record IslandPlayerRecord(boolean islandOwner, int islandId, UUID uuid) {
}

View File

@ -0,0 +1,5 @@
package com.alttd.cometskyblock.records;
public record IslandRecord(int islandId, String islandName, int islandLevel) {
}

View File

@ -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;

View File

@ -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());
}
} }

View File

@ -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);
}
} }

View File

@ -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;

View File

@ -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()));
}
}

View File

@ -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();
} }

View File

@ -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();
} }