package com.alttd.cometskyblock.island; import lombok.Getter; import lombok.Setter; import org.spongepowered.configurate.objectmapping.ConfigSerializable; import java.util.ArrayList; import java.util.List; import java.util.UUID; @ConfigSerializable @Getter public class Island { protected UUID worldId; protected String worldName; protected String islandName; @Setter protected int level; @Setter protected UUID owner; protected final List members = new ArrayList<>(); public boolean canBuild(UUID uuid) { return owner.equals(uuid) || members.contains(uuid); } public boolean addMember(UUID uuid) { return this.members.add(uuid); } public boolean removeMember(UUID uuid) { return this.members.remove(uuid); } public static class IslandBuilder extends Island { private final UUID worldUUID; private final String worldName; private String islandName; private int level; private UUID owner; private final List members = new ArrayList<>(); public IslandBuilder(UUID worldUUID, String worldName) { this.worldUUID = worldUUID; this.worldName = worldName; } public IslandBuilder islandName(String islandName) { this.islandName = islandName; return this; } public IslandBuilder level(int level) { this.level = level; return this; } public IslandBuilder owner(UUID owner) { this.owner = owner; return this; } public IslandBuilder members(List members) { this.members.addAll(members); return this; } public Island build() { Island island = new Island(); island.worldId = this.worldUUID; island.worldName = this.worldName; island.islandName = this.islandName; island.level = this.level; island.owner = this.owner; island.members.addAll(this.members); return island; } } }