diff --git a/src/main/java/net/fameless/forcebattle/command/MobileCraftingCommand.java b/src/main/java/net/fameless/forcebattle/command/MobileCraftingCommand.java new file mode 100644 index 0000000..275ffcf --- /dev/null +++ b/src/main/java/net/fameless/forcebattle/command/MobileCraftingCommand.java @@ -0,0 +1,43 @@ +package net.fameless.forcebattle.command; + +import net.fameless.forcebattle.caption.Caption; +import net.fameless.forcebattle.command.framework.CallerType; +import net.fameless.forcebattle.command.framework.Command; +import net.fameless.forcebattle.command.framework.CommandCaller; +import net.fameless.forcebattle.configuration.SettingsManager; +import net.fameless.forcebattle.player.BattlePlayer; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +import java.util.List; + +public class MobileCraftingCommand extends Command { + + public MobileCraftingCommand() { + super( + "craft", + List.of("crafting"), + CallerType.PLAYER, + "/craft", + "forcebattle.craft", + "Command to open the crafting table GUI" + ); + } + + @Override + public void executeCommand(@NotNull CommandCaller caller, String[] args) { + if (!SettingsManager.isEnabled(SettingsManager.Setting.MOBILE_CRAFTING)) { + caller.sendMessage(Caption.of("error.mobile_crafting_disabled")); + return; + } + if (caller instanceof BattlePlayer battlePlayer) { + Player player = battlePlayer.getPlayer(); + player.openWorkbench(null, true); + } + } + + @Override + public List tabComplete(CommandCaller caller, String[] args) { + return List.of(); + } +} diff --git a/src/main/java/net/fameless/forcebattle/command/framework/Command.java b/src/main/java/net/fameless/forcebattle/command/framework/Command.java index b0dc867..cc0d5d2 100644 --- a/src/main/java/net/fameless/forcebattle/command/framework/Command.java +++ b/src/main/java/net/fameless/forcebattle/command/framework/Command.java @@ -9,6 +9,7 @@ import net.fameless.forcebattle.command.HelpCommand; import net.fameless.forcebattle.command.JokerCommand; import net.fameless.forcebattle.command.LanguageCommand; +import net.fameless.forcebattle.command.MobileCraftingCommand; import net.fameless.forcebattle.command.PointsCommand; import net.fameless.forcebattle.command.RandomTeamsCommand; import net.fameless.forcebattle.command.RecipeCommand; @@ -90,6 +91,7 @@ public static void createInstances() { new HelpCommand(); new JokerCommand(); new LanguageCommand(); + new MobileCraftingCommand(); new PointsCommand(); new RandomTeamsCommand(); new RecipeCommand(); diff --git a/src/main/java/net/fameless/forcebattle/command/framework/PermissionManager.java b/src/main/java/net/fameless/forcebattle/command/framework/PermissionManager.java index 2955708..d513df8 100644 --- a/src/main/java/net/fameless/forcebattle/command/framework/PermissionManager.java +++ b/src/main/java/net/fameless/forcebattle/command/framework/PermissionManager.java @@ -25,7 +25,8 @@ public class PermissionManager { Map.entry("forcebattle.joker", PermissionDefault.OP), Map.entry("forcebattle.points", PermissionDefault.OP), Map.entry("forcebattle.help", PermissionDefault.TRUE), - Map.entry("forcebattle.randomteams", PermissionDefault.OP) + Map.entry("forcebattle.randomteams", PermissionDefault.OP), + Map.entry("forcebattle.craft", PermissionDefault.TRUE) ); public static void registerPermissions() { diff --git a/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java b/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java index b38489c..54dc67c 100644 --- a/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java +++ b/src/main/java/net/fameless/forcebattle/configuration/SettingsManager.java @@ -84,6 +84,7 @@ public enum Setting { NO_HUNGER, NO_DAMAGE, + MOBILE_CRAFTING, BACKPACK, CHAIN_MODE, HIDE_POINTS, diff --git a/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java b/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java index 50f482a..d0347dc 100644 --- a/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java +++ b/src/main/java/net/fameless/forcebattle/gui/impl/SettingsGUI.java @@ -46,6 +46,8 @@ public enum SettingButton { "gui.no_hunger_name", "gui.no_hunger_lore", "notification.no_hunger_changed"), NO_DAMAGE(19, Material.IRON_SWORD, SettingsManager.Setting.NO_DAMAGE, false, "gui.no_damage_name", "gui.no_damage_lore", "notification.no_damage_changed"), + MOBILE_CRAFTING(20, Material.CRAFTING_TABLE, SettingsManager.Setting.MOBILE_CRAFTING, false, + "gui.mobile_crafting_name", "gui.mobile_crafting_lore", "notification.mobile_crafting_changed"), CHAIN_MODE(27, Material.CHAIN, SettingsManager.Setting.CHAIN_MODE, false, "gui.chain_mode_name", "gui.chain_mode_lore", "notification.chain_mode_changed"), BACKPACK(28, Material.CHEST, SettingsManager.Setting.BACKPACK, false, diff --git a/src/main/resources/languages/en_US.json b/src/main/resources/languages/en_US.json index d7a5db0..3b9a730 100644 --- a/src/main/resources/languages/en_US.json +++ b/src/main/resources/languages/en_US.json @@ -34,6 +34,8 @@ "gui.no_hunger_lore" : "
Click to toggle no Hunger.

Current Status: ", "gui.no_damage_name" : "No Damage", "gui.no_damage_lore" : "
Click to toggle no Damage.

Current Status: ", + "gui.mobile_crafting_name" : "Mobile Crafting", + "gui.mobile_crafting_lore" : "
Click to toggle mobile crafting.

Current Status: ", "gui.chain_mode_name" : "Chain Mode", "gui.chain_mode_lore" : "
Click to toggle Chain Mode.

Current Status: ", "gui.result_title_all" : "Results | All Players", @@ -84,6 +86,7 @@ "notification.force_structure_changed" : "ForceStructure has been set to !", "notification.no_hunger_changed" : "No Hunger has been set to !", "notification.no_damage_changed" : "No Damage has been set to !", + "notification.mobile_crafting_changed" : "Mobile Crafting has been set to !", "notification.chain_mode_changed" : "Chain Mode has been set to !", "notification.no_duplicate_objectives_changed" : "No duplicate objectives has been set to !", "notification.simplified_objectives_changed" : "Simplified objectives have been set to !", @@ -137,6 +140,7 @@ "command.timer_set" : "The timer has been set to