Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 12 additions & 3 deletions src/main/java/net/onelitefeather/labyrinth/Labyrinth.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
import net.onelitefeather.labyrinth.commands.SetRadiusCommand;
import net.onelitefeather.labyrinth.listener.MobspawnListener;
import net.onelitefeather.labyrinth.commands.ZoneSuggestions;
import net.onelitefeather.labyrinth.service.api.ValidationService;
import net.onelitefeather.labyrinth.service.impl.ValidationServiceImpl;
import org.bukkit.command.CommandSender;
import org.bukkit.plugin.java.JavaPlugin;
import org.incendo.cloud.annotations.AnnotationParser;
Expand All @@ -17,6 +19,13 @@

public class Labyrinth extends JavaPlugin {

private ValidationService validationService;

@Override
public void onLoad() {
this.validationService = new ValidationServiceImpl(this);
}

@Override
public void onEnable() {
saveDefaultConfig();
Expand All @@ -35,9 +44,9 @@ public void registerCommands() {
var annotationParser = new AnnotationParser<>(commandManager, CommandSender.class, parameters -> CommandMeta.empty());

annotationParser.parse(new ZoneSuggestions(this));
annotationParser.parse(new CenterCommand(this));
annotationParser.parse(new SetRadiusCommand(this));
annotationParser.parse(new ToggleMobSpawnCommand(this));
annotationParser.parse(new CenterCommand(this, this.validationService));
annotationParser.parse(new SetRadiusCommand(this, this.validationService));
annotationParser.parse(new ToggleMobSpawnCommand(this, this.validationService));
annotationParser.parse(new CreateZoneCommand(this));
annotationParser.parse(new DeleteZoneCommand(this));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.onelitefeather.labyrinth.Labyrinth;
import net.onelitefeather.labyrinth.service.api.ValidationService;
import net.onelitefeather.labyrinth.utils.Constants;
import net.onelitefeather.labyrinth.utils.ValidateZoneInput;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.incendo.cloud.annotations.Argument;
import org.incendo.cloud.annotations.Command;
import org.incendo.cloud.annotations.Permission;

@Command("labyrinth")
public record CenterCommand(Labyrinth labyrinth) {
public record CenterCommand(Labyrinth labyrinth, ValidationService validationService) {

@Command("center <zone>")
@Permission("labyrinth.setup.center")
Expand All @@ -23,7 +23,7 @@ public void centerCommand(Player player, @Argument(value = "zone", suggestions =
* This location Y is important to be set to 0 for a cylindric region, see {@link SetRadiusCommand}
* */
location.setY(0);
if (ValidateZoneInput.validateZoneInput(player, zone, labyrinth)) {
if (validationService.validateZoneInput(player,zone)) {
this.labyrinth.getConfig().set(Constants.CONFIG_ZONE_CENTER_PATH.formatted(zone), location);
labyrinth.saveConfig();
var message = MiniMessage.miniMessage().deserialize(Constants.CENTER_COMMAND_MESSAGE_SUCCESS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ public record DeleteZoneCommand(Labyrinth labyrinth) {

@Command("delete <zone>")
@Permission("labyrinth.setup.deletezone")
public void createZone(Player player, @Argument(value = "zone", suggestions = "zones") String zone) {
public void deleteZone(Player player, @Argument(value = "zone", suggestions = "zones") String zone) {
var zoneString = Constants.CONFIG_ZONE_PATH.formatted(zone);
if(labyrinth.getConfig().contains(zoneString)) {
labyrinth.getConfig().set(zoneString, null);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.onelitefeather.labyrinth.Labyrinth;
import net.onelitefeather.labyrinth.service.api.ValidationService;
import net.onelitefeather.labyrinth.utils.Constants;
import net.onelitefeather.labyrinth.utils.ValidateZoneInput;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.incendo.cloud.annotations.Argument;
Expand All @@ -14,12 +14,12 @@


@Command("labyrinth")
public record SetRadiusCommand(Labyrinth labyrinth) {
public record SetRadiusCommand(Labyrinth labyrinth, ValidationService validationService) {

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

// This playerLabyrinthCenterLocation needs to have the Y axis to be 0, in order to do a cylindric region.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,21 @@
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.onelitefeather.labyrinth.Labyrinth;
import net.onelitefeather.labyrinth.service.api.ValidationService;
import net.onelitefeather.labyrinth.utils.Constants;
import net.onelitefeather.labyrinth.utils.ValidateZoneInput;
import org.bukkit.entity.Player;
import org.incendo.cloud.annotations.Argument;
import org.incendo.cloud.annotations.Command;
import org.incendo.cloud.annotations.Permission;
import org.jetbrains.annotations.NotNull;

@Command("labyrinth")
public record ToggleMobSpawnCommand(Labyrinth labyrinth) {
public record ToggleMobSpawnCommand(Labyrinth labyrinth, ValidationService validationService) {

@Command("toggle <zone>")
@Permission("labyrinth.toggle.mobspawn")
public void toggleMobSpawn(@NotNull Player player, @Argument(value = "zone", suggestions = "zones") String zone) {
if (ValidateZoneInput.validateZoneInput(player, zone, labyrinth)) {
if (validationService.validateZoneInput(player, zone)) {
boolean mobSpawning = !labyrinth.getConfig().getBoolean(Constants.CONFIG_ZONE_MOBSPAWNING_PATH.formatted(zone), false);
labyrinth.getConfig().set(Constants.CONFIG_ZONE_MOBSPAWNING_PATH.formatted(zone), mobSpawning);
labyrinth.saveConfig();
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package net.onelitefeather.labyrinth.service.api;

import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;


public interface ValidationService {

boolean validateZoneInput(@NotNull Player player, @NotNull String zone);
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,25 @@
package net.onelitefeather.labyrinth.utils;
package net.onelitefeather.labyrinth.service.impl;

import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.onelitefeather.labyrinth.Labyrinth;
import net.onelitefeather.labyrinth.service.api.ValidationService;
import net.onelitefeather.labyrinth.utils.Constants;
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;

import java.util.regex.Matcher;

public class ValidateZoneInput {
public final class ValidationServiceImpl implements ValidationService {

private final Labyrinth labyrinth;

public static boolean validateZoneInput(@NotNull Player player,String zone, Labyrinth labyrinth) {
public ValidationServiceImpl(Labyrinth labyrinth) {
this.labyrinth = labyrinth;
}

@Override
public boolean validateZoneInput(@NotNull Player player, @NotNull String zone) {
if (!labyrinth.getConfig().isSet(Constants.CONFIG_ZONE_PATH.formatted(zone))) {
player.sendMessage(MiniMessage.miniMessage().deserialize(
"Zone <zone> could not be found!", Placeholder.unparsed("zone", zone)));
Expand All @@ -25,4 +33,5 @@ public static boolean validateZoneInput(@NotNull Player player,String zone, Laby
}
return true;
}

}
Loading