diff --git a/Datura/src/main/java/me/totalfreedom/datura/Datura.java b/Datura/src/main/java/me/totalfreedom/datura/Datura.java index e41c339..5ef1440 100644 --- a/Datura/src/main/java/me/totalfreedom/datura/Datura.java +++ b/Datura/src/main/java/me/totalfreedom/datura/Datura.java @@ -5,6 +5,7 @@ import me.totalfreedom.datura.punishment.Cager; import me.totalfreedom.datura.punishment.Halter; import me.totalfreedom.datura.punishment.Locker; import me.totalfreedom.datura.sql.MySQL; +import me.totalfreedom.service.SubscriptionProvider; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; @@ -27,11 +28,11 @@ public class Datura extends JavaPlugin CommonsBase.getInstance() .getRegistrations() .getServiceRegistry() - .registerService(this, locker); + .registerService(SubscriptionProvider.syncService(this, locker)); CommonsBase.getInstance() .getRegistrations() .getServiceRegistry() - .registerService(this, cager); + .registerService(SubscriptionProvider.syncService(this, cager)); Bukkit.getPluginManager() .registerEvents(halter, this); diff --git a/Datura/src/main/java/me/totalfreedom/datura/cmd/CageCommand.java b/Datura/src/main/java/me/totalfreedom/datura/cmd/CageCommand.java new file mode 100644 index 0000000..444ee23 --- /dev/null +++ b/Datura/src/main/java/me/totalfreedom/datura/cmd/CageCommand.java @@ -0,0 +1,84 @@ +/* + * Copyright (c) 2023 TotalFreedom + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this + * software and associated documentation files (the “Software”), to deal in the Software + * without restriction, including without limitation the rights to use, copy, modify, merge, + * publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to + * whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or + * substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +package me.totalfreedom.datura.cmd; + +import me.totalfreedom.command.Commander; +import me.totalfreedom.command.annotation.Completion; +import me.totalfreedom.command.annotation.Info; +import me.totalfreedom.command.annotation.Permissive; +import me.totalfreedom.command.annotation.Subcommand; +import me.totalfreedom.datura.Datura; +import org.bukkit.Material; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; +import org.bukkit.plugin.java.JavaPlugin; +import org.jetbrains.annotations.NotNull; + +@Info(name = "cage", description = "Cage a player.", + usage = "/cage [material]") +@Permissive(perm = "datura.cage") +public class CageCommand extends Commander +{ + protected CageCommand(final @NotNull JavaPlugin plugin) + { + super(plugin); + } + + @Completion(args = {"%player%"}, index = 0) + @Completion(args = {"on", "off"}, index = 1) + @Subcommand(permission = "datura.cage", args = {Player.class, String.class}) + public void cagePlayer(final CommandSender sender, final Player player, final String string) + { + switch (string.toLowerCase()) + { + case "on" -> + { + ((Datura) getPlugin()).getCager().cagePlayer(player.getUniqueId()); + sender.sendPlainMessage("Caged " + player.getName() + "."); + } + case "off" -> + { + ((Datura) getPlugin()).getCager().uncagePlayer(player.getUniqueId()); + sender.sendPlainMessage("Liberated " + player.getName() + "."); + } + } + } + + @Completion(args = {"[material]"}, index = 2) + @Subcommand(permission = "datura.cage.custom", args = {Player.class, String.class, Material.class}) + public void cagePlayer(final CommandSender sender, final Player player, final String string, final Material material) + { + switch (string.toLowerCase()) + { + case "on" -> + { + ((Datura) getPlugin()).getCager().cagePlayer(player.getUniqueId(), material); + sender.sendPlainMessage("Caged " + player.getName() + "."); + } + case "off" -> + { + ((Datura) getPlugin()).getCager().uncagePlayer(player.getUniqueId()); + sender.sendPlainMessage("Liberated " + player.getName() + "."); + } + } + } +} diff --git a/Datura/src/main/java/me/totalfreedom/datura/cmd/LockerCommand.java b/Datura/src/main/java/me/totalfreedom/datura/cmd/LockerCommand.java index f346e83..f1d7a99 100644 --- a/Datura/src/main/java/me/totalfreedom/datura/cmd/LockerCommand.java +++ b/Datura/src/main/java/me/totalfreedom/datura/cmd/LockerCommand.java @@ -31,7 +31,8 @@ public final class LockerCommand extends Commander .lock(player); sender.sendPlainMessage("Locked " + player.getName() + "."); - } else if (string.equalsIgnoreCase("off")) + } + else if (string.equalsIgnoreCase("off")) { ((Datura) getPlugin()).getLocker() .unlock(player); diff --git a/Datura/src/main/java/me/totalfreedom/datura/punishment/Cager.java b/Datura/src/main/java/me/totalfreedom/datura/punishment/Cager.java index ec584f1..5c767e8 100644 --- a/Datura/src/main/java/me/totalfreedom/datura/punishment/Cager.java +++ b/Datura/src/main/java/me/totalfreedom/datura/punishment/Cager.java @@ -28,7 +28,7 @@ public class Cager extends Service public Cager() { - super("cage_service"); + super("cager-service"); this.cagedPlayers = new HashSet<>(); this.cageLocations = new HashMap<>(); Bukkit.getPluginManager() diff --git a/Fossil/src/main/java/me/totalfreedom/fossil/cmd/CakeCommand.java b/Fossil/src/main/java/me/totalfreedom/fossil/cmd/CakeCommand.java index 7a6c437..c4e5bd7 100644 --- a/Fossil/src/main/java/me/totalfreedom/fossil/cmd/CakeCommand.java +++ b/Fossil/src/main/java/me/totalfreedom/fossil/cmd/CakeCommand.java @@ -21,7 +21,7 @@ package me.totalfreedom.fossil.cmd; -import me.totalfreedom.command.CommandBase; +import me.totalfreedom.command.Commander; import me.totalfreedom.command.annotation.Base; import me.totalfreedom.command.annotation.Info; import me.totalfreedom.command.annotation.Permissive; @@ -32,18 +32,19 @@ import org.bukkit.command.CommandSender; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.plugin.java.JavaPlugin; +import org.jetbrains.annotations.NotNull; @Info(name = "cake", description = "Gives everyone cake and broadcasts a message.", usage = "/cake") @Permissive(perm = "fossil.cake") -public class CakeCommand extends CommandBase +public class CakeCommand extends Commander { - protected CakeCommand(JavaPlugin plugin) + protected CakeCommand(final @NotNull JavaPlugin plugin) { super(plugin); } @Base - public void cake(final CommandSender sender) + public void broadcastCake(final CommandSender sender) { Bukkit.broadcast(FreedomMiniMessage.deserialize(true, "But there's no sense crying over every mistake. You just keep on trying till you run out of cake."));