Skip to content

Commit 898c7a7

Browse files
authored
Merge pull request #15 from OneLiteFeatherNET/feature/service-layer
feat(zone validation): Implement service layer architecture
2 parents 5cafde3 + cecbbda commit 898c7a7

7 files changed

Lines changed: 45 additions & 17 deletions

File tree

src/main/java/net/onelitefeather/labyrinth/Labyrinth.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
import net.onelitefeather.labyrinth.commands.SetRadiusCommand;
88
import net.onelitefeather.labyrinth.listener.MobspawnListener;
99
import net.onelitefeather.labyrinth.commands.ZoneSuggestions;
10+
import net.onelitefeather.labyrinth.service.api.ValidationService;
11+
import net.onelitefeather.labyrinth.service.impl.ValidationServiceImpl;
1012
import org.bukkit.command.CommandSender;
1113
import org.bukkit.plugin.java.JavaPlugin;
1214
import org.incendo.cloud.annotations.AnnotationParser;
@@ -17,6 +19,13 @@
1719

1820
public class Labyrinth extends JavaPlugin {
1921

22+
private ValidationService validationService;
23+
24+
@Override
25+
public void onLoad() {
26+
this.validationService = new ValidationServiceImpl(this);
27+
}
28+
2029
@Override
2130
public void onEnable() {
2231
saveDefaultConfig();
@@ -35,9 +44,9 @@ public void registerCommands() {
3544
var annotationParser = new AnnotationParser<>(commandManager, CommandSender.class, parameters -> CommandMeta.empty());
3645

3746
annotationParser.parse(new ZoneSuggestions(this));
38-
annotationParser.parse(new CenterCommand(this));
39-
annotationParser.parse(new SetRadiusCommand(this));
40-
annotationParser.parse(new ToggleMobSpawnCommand(this));
47+
annotationParser.parse(new CenterCommand(this, this.validationService));
48+
annotationParser.parse(new SetRadiusCommand(this, this.validationService));
49+
annotationParser.parse(new ToggleMobSpawnCommand(this, this.validationService));
4150
annotationParser.parse(new CreateZoneCommand(this));
4251
annotationParser.parse(new DeleteZoneCommand(this));
4352
}

src/main/java/net/onelitefeather/labyrinth/commands/CenterCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,16 @@
33
import net.kyori.adventure.text.minimessage.MiniMessage;
44
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
55
import net.onelitefeather.labyrinth.Labyrinth;
6+
import net.onelitefeather.labyrinth.service.api.ValidationService;
67
import net.onelitefeather.labyrinth.utils.Constants;
7-
import net.onelitefeather.labyrinth.utils.ValidateZoneInput;
88
import org.bukkit.Location;
99
import org.bukkit.entity.Player;
1010
import org.incendo.cloud.annotations.Argument;
1111
import org.incendo.cloud.annotations.Command;
1212
import org.incendo.cloud.annotations.Permission;
1313

1414
@Command("labyrinth")
15-
public record CenterCommand(Labyrinth labyrinth) {
15+
public record CenterCommand(Labyrinth labyrinth, ValidationService validationService) {
1616

1717
@Command("center <zone>")
1818
@Permission("labyrinth.setup.center")
@@ -23,7 +23,7 @@ public void centerCommand(Player player, @Argument(value = "zone", suggestions =
2323
* This location Y is important to be set to 0 for a cylindric region, see {@link SetRadiusCommand}
2424
* */
2525
location.setY(0);
26-
if (ValidateZoneInput.validateZoneInput(player, zone, labyrinth)) {
26+
if (validationService.validateZoneInput(player,zone)) {
2727
this.labyrinth.getConfig().set(Constants.CONFIG_ZONE_CENTER_PATH.formatted(zone), location);
2828
labyrinth.saveConfig();
2929
var message = MiniMessage.miniMessage().deserialize(Constants.CENTER_COMMAND_MESSAGE_SUCCESS,

src/main/java/net/onelitefeather/labyrinth/commands/DeleteZoneCommand.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public record DeleteZoneCommand(Labyrinth labyrinth) {
1515

1616
@Command("delete <zone>")
1717
@Permission("labyrinth.setup.deletezone")
18-
public void createZone(Player player, @Argument(value = "zone", suggestions = "zones") String zone) {
18+
public void deleteZone(Player player, @Argument(value = "zone", suggestions = "zones") String zone) {
1919
var zoneString = Constants.CONFIG_ZONE_PATH.formatted(zone);
2020
if(labyrinth.getConfig().contains(zoneString)) {
2121
labyrinth.getConfig().set(zoneString, null);

src/main/java/net/onelitefeather/labyrinth/commands/SetRadiusCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
import net.kyori.adventure.text.minimessage.MiniMessage;
44
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
55
import net.onelitefeather.labyrinth.Labyrinth;
6+
import net.onelitefeather.labyrinth.service.api.ValidationService;
67
import net.onelitefeather.labyrinth.utils.Constants;
7-
import net.onelitefeather.labyrinth.utils.ValidateZoneInput;
88
import org.bukkit.Location;
99
import org.bukkit.entity.Player;
1010
import org.incendo.cloud.annotations.Argument;
@@ -14,12 +14,12 @@
1414

1515

1616
@Command("labyrinth")
17-
public record SetRadiusCommand(Labyrinth labyrinth) {
17+
public record SetRadiusCommand(Labyrinth labyrinth, ValidationService validationService) {
1818

1919
@Command("setradius <zone>")
2020
@Permission("labyrinth.setup.setradius")
2121
public void setRadius(@NotNull Player player, @Argument(value = "zone", suggestions = "zones") String zone) {
22-
if (ValidateZoneInput.validateZoneInput(player, zone, labyrinth)) {
22+
if (validationService.validateZoneInput(player, zone)) {
2323
Location playerLabyrinthCenterLocation = player.getLocation();
2424

2525
// This playerLabyrinthCenterLocation needs to have the Y axis to be 0, in order to do a cylindric region.

src/main/java/net/onelitefeather/labyrinth/commands/ToggleMobSpawnCommand.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,21 @@
33
import net.kyori.adventure.text.minimessage.MiniMessage;
44
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
55
import net.onelitefeather.labyrinth.Labyrinth;
6+
import net.onelitefeather.labyrinth.service.api.ValidationService;
67
import net.onelitefeather.labyrinth.utils.Constants;
7-
import net.onelitefeather.labyrinth.utils.ValidateZoneInput;
88
import org.bukkit.entity.Player;
99
import org.incendo.cloud.annotations.Argument;
1010
import org.incendo.cloud.annotations.Command;
1111
import org.incendo.cloud.annotations.Permission;
1212
import org.jetbrains.annotations.NotNull;
1313

1414
@Command("labyrinth")
15-
public record ToggleMobSpawnCommand(Labyrinth labyrinth) {
15+
public record ToggleMobSpawnCommand(Labyrinth labyrinth, ValidationService validationService) {
1616

1717
@Command("toggle <zone>")
1818
@Permission("labyrinth.toggle.mobspawn")
1919
public void toggleMobSpawn(@NotNull Player player, @Argument(value = "zone", suggestions = "zones") String zone) {
20-
if (ValidateZoneInput.validateZoneInput(player, zone, labyrinth)) {
20+
if (validationService.validateZoneInput(player, zone)) {
2121
boolean mobSpawning = !labyrinth.getConfig().getBoolean(Constants.CONFIG_ZONE_MOBSPAWNING_PATH.formatted(zone), false);
2222
labyrinth.getConfig().set(Constants.CONFIG_ZONE_MOBSPAWNING_PATH.formatted(zone), mobSpawning);
2323
labyrinth.saveConfig();
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package net.onelitefeather.labyrinth.service.api;
2+
3+
import org.bukkit.entity.Player;
4+
import org.jetbrains.annotations.NotNull;
5+
6+
7+
public interface ValidationService {
8+
9+
boolean validateZoneInput(@NotNull Player player, @NotNull String zone);
10+
}

src/main/java/net/onelitefeather/labyrinth/utils/ValidateZoneInput.java renamed to src/main/java/net/onelitefeather/labyrinth/service/impl/ValidationServiceImpl.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,25 @@
1-
package net.onelitefeather.labyrinth.utils;
1+
package net.onelitefeather.labyrinth.service.impl;
22

33
import net.kyori.adventure.text.Component;
44
import net.kyori.adventure.text.minimessage.MiniMessage;
55
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
66
import net.onelitefeather.labyrinth.Labyrinth;
7+
import net.onelitefeather.labyrinth.service.api.ValidationService;
8+
import net.onelitefeather.labyrinth.utils.Constants;
79
import org.bukkit.entity.Player;
810
import org.jetbrains.annotations.NotNull;
9-
1011
import java.util.regex.Matcher;
1112

12-
public class ValidateZoneInput {
13+
public final class ValidationServiceImpl implements ValidationService {
14+
15+
private final Labyrinth labyrinth;
1316

14-
public static boolean validateZoneInput(@NotNull Player player,String zone, Labyrinth labyrinth) {
17+
public ValidationServiceImpl(Labyrinth labyrinth) {
18+
this.labyrinth = labyrinth;
19+
}
20+
21+
@Override
22+
public boolean validateZoneInput(@NotNull Player player, @NotNull String zone) {
1523
if (!labyrinth.getConfig().isSet(Constants.CONFIG_ZONE_PATH.formatted(zone))) {
1624
player.sendMessage(MiniMessage.miniMessage().deserialize(
1725
"Zone <zone> could not be found!", Placeholder.unparsed("zone", zone)));
@@ -25,4 +33,5 @@ public static boolean validateZoneInput(@NotNull Player player,String zone, Laby
2533
}
2634
return true;
2735
}
36+
2837
}

0 commit comments

Comments
 (0)