Skip to content

Commit 805f765

Browse files
committed
Alpha 1.0 RC02
- Adjusted things for QoL purposes. - Added TabCompletion to the tool assist command.
1 parent f1989e1 commit 805f765

4 files changed

Lines changed: 78 additions & 13 deletions

File tree

src/main/java/io/github/simplex/toolassist/ToolAssist.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,24 +9,29 @@
99
public final class ToolAssist extends JavaPlugin {
1010

1111
private Config config;
12+
private Command_toolassist command;
1213

1314
@Override
1415
public void onEnable() {
1516
// Plugin startup logic
1617
getLogger().info("Initializing configuration...");
17-
this.config = new Config(this);
18+
config = new Config(this);
1819
getLogger().info("Configuration loaded! Registering listener...");
1920
new MineListener(this);
2021
getLogger().info("Listener registered successfully! Loading command...");
21-
new Command_toolassist(this);
22+
command = new Command_toolassist(this);
2223
getLogger().info("Initialization complete!");
2324
}
2425

2526
@Override
2627
public void onDisable() {
27-
this.config.osave();
28-
this.config = null;
29-
getLogger().info("Goodbye!");
28+
getLogger().info("Saving configuration...");
29+
config.osave();
30+
config = null;
31+
getLogger().info("Configuration saved successfully. Unregistering the command...");
32+
command.unregister();
33+
command = null;
34+
getLogger().info("Termination complete. Goodbye!");
3035
}
3136

3237
@Override

src/main/java/io/github/simplex/toolassist/data/BlockIdentifier.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import io.github.simplex.toolassist.ToolAssist;
44
import org.bukkit.Location;
5+
import org.bukkit.Material;
6+
import org.bukkit.Tag;
57
import org.bukkit.block.Block;
68
import org.bukkit.inventory.ItemStack;
79

@@ -35,7 +37,7 @@ public List<Block> populateAndRetrieve(Block block, ItemStack requiredItem) {
3537

3638
public boolean checkBlock(Block block, ItemStack targetItem) {
3739
if (plugin.getConfig().getSettings().noConfig()) {
38-
return block.isValidTool(targetItem);
40+
return block.isValidTool(targetItem) && all.stream().anyMatch(a -> a.isTagged(block.getType()));
3941
}
4042

4143
checkBlockConfig(block, targetItem);
@@ -71,4 +73,20 @@ private void checkBlockConfig(Block block, ItemStack targetItem) {
7173
}
7274
isValid = false;
7375
}
76+
77+
public List<Tag<Material>> all = List.of(Tag.COAL_ORES,
78+
Tag.COPPER_ORES,
79+
Tag.GOLD_ORES,
80+
Tag.IRON_ORES,
81+
Tag.DIAMOND_ORES,
82+
Tag.LAPIS_ORES,
83+
Tag.EMERALD_ORES,
84+
Tag.REDSTONE_ORES,
85+
Tag.SAND,
86+
Tag.CAVE_VINES,
87+
Tag.WART_BLOCKS,
88+
Tag.LOGS,
89+
Tag.LOGS_THAT_BURN,
90+
Tag.LEAVES,
91+
Tag.WARPED_STEMS);
7492
}

src/main/java/io/github/simplex/toolassist/play/Command_toolassist.java

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,16 @@
77
import org.bukkit.command.Command;
88
import org.bukkit.command.CommandSender;
99
import org.bukkit.command.PluginIdentifiableCommand;
10-
import org.bukkit.plugin.Plugin;
10+
import org.bukkit.command.TabCompleter;
1111
import org.jetbrains.annotations.NotNull;
12+
import org.jetbrains.annotations.Nullable;
1213

14+
import java.util.ArrayList;
15+
import java.util.Arrays;
1316
import java.util.List;
17+
import java.util.stream.Stream;
1418

15-
public class Command_toolassist extends Command implements PluginIdentifiableCommand {
19+
public class Command_toolassist extends Command implements PluginIdentifiableCommand, TabCompleter {
1620
private final ToolAssist plugin;
1721

1822
public Command_toolassist(ToolAssist plugin) {
@@ -56,7 +60,7 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLab
5660
}
5761
}
5862

59-
if (args[0].equalsIgnoreCase("tool")) {
63+
if (args[0].equalsIgnoreCase("tools")) {
6064
if (args.length != 4) return false;
6165

6266
if (args[1].equalsIgnoreCase("add")) {
@@ -93,4 +97,42 @@ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLab
9397
public @NotNull ToolAssist getPlugin() {
9498
return plugin;
9599
}
100+
101+
@Override
102+
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) {
103+
List<String> completions = new ArrayList<>();
104+
105+
switch (args.length) {
106+
case 1 -> {
107+
completions = List.of("tools", "plugin");
108+
}
109+
case 2 -> {
110+
if (args[0].equalsIgnoreCase("tools")) {
111+
completions = List.of("add", "remove");
112+
}
113+
if (args[0].equalsIgnoreCase("plugin")) {
114+
completions = List.of("permission", "radius", "sneak", "use_config");
115+
}
116+
}
117+
case 3 -> {
118+
if (args[0].equalsIgnoreCase("tools")) {
119+
if (args[1].equalsIgnoreCase("add") || args[1].equalsIgnoreCase("remove")) {
120+
completions = Stream.of("pickaxe", "axe", "sword", "shears", "shovel", "hoe").sorted().toList();
121+
}
122+
}
123+
124+
if (args[0].equalsIgnoreCase("plugin")) {
125+
if (args[1].equalsIgnoreCase("use_config") || args[1].equalsIgnoreCase("sneak")) {
126+
completions = List.of("true", "false");
127+
}
128+
}
129+
}
130+
}
131+
132+
return completions.stream().filter(p -> p.startsWith(args[args.length - 1])).toList();
133+
}
134+
135+
public void unregister() {
136+
unregister(plugin.getServer().getCommandMap());
137+
}
96138
}

src/main/java/io/github/simplex/toolassist/play/MineListener.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ public MineListener(ToolAssist plugin) {
2525
@EventHandler
2626
public void activate(BlockBreakEvent event) {
2727
Player player = event.getPlayer();
28-
ItemStack stack = player.getInventory().getItemInMainHand();
29-
Block block = event.getBlock();
3028
String permission = settings.permission();
31-
List<Block> blocks = identifier.populateAndRetrieve(block, stack);
3229

3330
if (!player.hasPermission(permission)) return;
34-
3531
if (!player.isSneaking() && settings.useSneak()) return;
3632

33+
ItemStack stack = player.getInventory().getItemInMainHand();
34+
Block block = event.getBlock();
35+
List<Block> blocks = identifier.populateAndRetrieve(block, stack);
36+
3737
blocks.forEach(Block::breakNaturally);
3838
}
3939
}

0 commit comments

Comments
 (0)