Skip to content

Commit a5781d1

Browse files
committed
Switch to adventure for color/message handling. Add Class checks. Rename config paths. Message Map. Material tags for farmables instead of comparing to an arraylist. Set permission defaults.
1 parent b3dbe73 commit a5781d1

File tree

11 files changed

+153
-93
lines changed

11 files changed

+153
-93
lines changed

pom.xml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@
66

77
<groupId>ADHDMC</groupId>
88
<artifactId>Scythe</artifactId>
9-
<version>0.1</version>
9+
<version>1.0</version>
1010
<packaging>jar</packaging>
1111

1212
<name>Scythe</name>
1313

1414
<properties>
15-
<java.version>1.8</java.version>
15+
<java.version>17</java.version>
1616
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
1717
</properties>
1818

@@ -77,7 +77,7 @@
7777
<dependency>
7878
<groupId>io.papermc.paper</groupId>
7979
<artifactId>paper-api</artifactId>
80-
<version>1.19-R0.1-SNAPSHOT</version>
80+
<version>1.18.2-R0.1-SNAPSHOT</version>
8181
<scope>provided</scope>
8282
</dependency>
8383
</dependencies>

src/main/java/adhdmc/scythe/Commands/CommandHandler.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,22 @@
11
package adhdmc.scythe.Commands;
22

33
import adhdmc.scythe.Commands.SubCommands.SubCommand;
4+
import adhdmc.scythe.MessageHandler;
5+
import adhdmc.scythe.Scythe;
6+
import net.kyori.adventure.text.minimessage.MiniMessage;
7+
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
48
import org.bukkit.ChatColor;
59
import org.bukkit.command.Command;
610
import org.bukkit.command.CommandExecutor;
711
import org.bukkit.command.CommandSender;
812
import org.bukkit.command.TabExecutor;
913

10-
import java.util.ArrayList;
11-
import java.util.Arrays;
12-
import java.util.HashMap;
13-
import java.util.List;
14+
import java.util.*;
1415

1516
public class CommandHandler implements CommandExecutor, TabExecutor {
1617
public static HashMap<String, SubCommand> subcommandList = new HashMap<String, SubCommand>();
18+
Map<MessageHandler.Message, String> msgs = MessageHandler.getMessageMap();
19+
MiniMessage mM = MiniMessage.miniMessage();
1720

1821
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
1922
ArrayList<String> tabbableCommands = new ArrayList<String>(Arrays.asList("toggle", "reload", "help"));
@@ -26,14 +29,18 @@ public List<String> onTabComplete(CommandSender sender, Command command, String
2629
@Override
2730
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
2831
if (args.length == 0){
29-
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "\n&aAuthor: &6IllogicalSong\n&aVersion:&7 ALPHA"));
32+
sender.sendMessage(mM.deserialize("<click:open_url:'https://github.com/RhythmicSys/Scythe'><hover:show_text:'<gray>Click here to visit the GitHub!'>" +
33+
"<green>Scythe Version: <version> </hover></click>| Authors: " +
34+
"<click:open_url:'https://github.com/RhythmicSys'>" +
35+
"<hover:show_text:'<gray>Click here to visit Rhythmic\\'s GitHub!'>" +
36+
"Rhythmic", Placeholder.parsed("version", String.valueOf(Scythe.version))));
3037
return true;
3138
}
3239
String command = args[0].toLowerCase();
3340
if (subcommandList.containsKey(command)) {
3441
subcommandList.get(command).doThing(sender, Arrays.copyOfRange(args, 1, args.length));
3542
} else {
36-
sender.sendMessage("Sorry, you input the command incorrectly. Please use `/scythe` help to see proper usage");
43+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.UNKNOWN_COMMAND)));
3744
}
3845
return true;
3946
}

src/main/java/adhdmc/scythe/Commands/SubCommands/HelpCommand.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,31 @@
11
package adhdmc.scythe.Commands.SubCommands;
22

33
import adhdmc.scythe.MessageHandler;
4+
import adhdmc.scythe.Scythe;
5+
import net.kyori.adventure.text.Component;
6+
import net.kyori.adventure.text.minimessage.MiniMessage;
47
import org.bukkit.command.CommandSender;
58

69
import java.util.List;
10+
import java.util.Map;
711

812
public class HelpCommand extends SubCommand{
13+
Map<MessageHandler.Message, String> msgs = MessageHandler.getMessageMap();
14+
MiniMessage mM = MiniMessage.miniMessage();
915
public HelpCommand(){
1016
super ("help","Scythe Info", "/scythe help");
1117
}
1218

1319
@Override
1420
public void doThing(CommandSender sender, String[] args) {
15-
if(sender.hasPermission("scythe.use")) {
16-
sender.sendMessage(MessageHandler.prefix + MessageHandler.helpMain);
17-
sender.sendMessage(MessageHandler.helpToggle);
18-
sender.sendMessage(MessageHandler.helpReload);
21+
if(sender.hasPermission(Scythe.usePermission)) {
22+
sender.sendMessage(mM.deserialize(msgs.get(
23+
MessageHandler.Message.PREFIX) + "\n" + msgs.get(MessageHandler.Message.HELP_MAIN) +
24+
"\n" + msgs.get(MessageHandler.Message.HELP_RELOAD) +
25+
"\n" + msgs.get(MessageHandler.Message.HELP_TOGGLE)));
1926
return;
2027
}
21-
sender.sendMessage(MessageHandler.noPermission);
28+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.NO_PERMISSION)));
2229
}
2330

2431
@Override

src/main/java/adhdmc/scythe/Commands/SubCommands/ReloadCommand.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,26 +2,30 @@
22

33
import adhdmc.scythe.MessageHandler;
44
import adhdmc.scythe.Scythe;
5+
import net.kyori.adventure.text.minimessage.MiniMessage;
56
import org.bukkit.command.CommandSender;
67
import org.bukkit.entity.Player;
78

89
import java.util.List;
10+
import java.util.Map;
911

1012
public class ReloadCommand extends SubCommand {
13+
Map<MessageHandler.Message, String> msgs = MessageHandler.getMessageMap();
14+
MiniMessage mM = MiniMessage.miniMessage();
1115

1216
public ReloadCommand(){
1317
super("reload", "Reloads the Scythe Plugin", "/scythe reload");
1418
}
1519

1620
@Override
1721
public void doThing(CommandSender sender, String[] args) {
18-
if (!(sender instanceof Player)|| sender.hasPermission("scythe.reload")) {
22+
if (!(sender instanceof Player)|| sender.hasPermission(Scythe.reloadPermission)) {
1923
Scythe.plugin.reloadConfig();
20-
MessageHandler.loadPluginMsgs();
21-
sender.sendMessage(MessageHandler.configReload);
24+
MessageHandler.configParser();
25+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.CONFIG_RELOAD)));
2226
return;
2327
}
24-
sender.sendMessage(MessageHandler.noPermission);
28+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.NO_PERMISSION)));
2529
}
2630

2731
@Override

src/main/java/adhdmc/scythe/Commands/SubCommands/ToggleCommand.java

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,47 +2,53 @@
22

33
import adhdmc.scythe.MessageHandler;
44
import adhdmc.scythe.Scythe;
5+
import net.kyori.adventure.text.minimessage.MiniMessage;
56
import org.bukkit.NamespacedKey;
67
import org.bukkit.command.CommandSender;
78
import org.bukkit.entity.Player;
89
import org.bukkit.persistence.PersistentDataContainer;
910
import org.bukkit.persistence.PersistentDataType;
1011

1112
import java.util.List;
13+
import java.util.Map;
1214
import java.util.Objects;
1315

1416
public class ToggleCommand extends SubCommand {
17+
Map<MessageHandler.Message, String> msgs = MessageHandler.getMessageMap();
18+
MiniMessage mM = MiniMessage.miniMessage();
19+
NamespacedKey toggle = new NamespacedKey(Scythe.plugin, "toggle");
20+
1521
public ToggleCommand() {
1622
super("toggle", "Toggles scythe on and off","/scythe toggle");
1723
}
1824
public void doThing(CommandSender sender, String[] args) {
1925
if (!(sender instanceof Player)) {
20-
sender.sendMessage(MessageHandler.notAPlayer);
26+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.NOT_A_PLAYER)));
2127
return;
2228
}
23-
if (!(sender.hasPermission("scythe.toggle")) || !(sender.hasPermission("scythe.use"))) {
24-
sender.sendMessage(MessageHandler.noPermission);
29+
if (!(sender.hasPermission(Scythe.togglePermission) && sender.hasPermission(Scythe.usePermission))) {
30+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.PREFIX) + msgs.get(MessageHandler.Message.NO_PERMISSION)));
2531
return;
2632
}
2733
if (toggleSetting((Player) sender)) {
28-
sender.sendMessage(MessageHandler.prefix + " " + MessageHandler.toggleOn);
34+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.PREFIX) + msgs.get(MessageHandler.Message.TOGGLE_ON)));
2935
return;
3036
}
31-
sender.sendMessage(MessageHandler.prefix + " " + MessageHandler.toggleOff);
37+
sender.sendMessage(mM.deserialize(msgs.get(MessageHandler.Message.PREFIX) + msgs.get(MessageHandler.Message.TOGGLE_OFF)));
3238
}
3339

3440
private boolean toggleSetting(Player player) {
3541
PersistentDataContainer pdc = player.getPersistentDataContainer();
36-
if (pdc.has(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING)) {
37-
String pdcToggle = pdc.get(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING);
38-
if (pdcToggle.equals("true")) {
39-
pdc.set(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING, "false");
42+
if (pdc.has(toggle, PersistentDataType.STRING)) {
43+
String pdcToggle = pdc.get(toggle, PersistentDataType.STRING);
44+
if (pdcToggle != null && pdcToggle.equals("true")) {
45+
pdc.set(toggle, PersistentDataType.STRING, "false");
4046
return false;
4147
}
42-
pdc.set(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING, "true");
48+
pdc.set(toggle, PersistentDataType.STRING, "true");
4349
return true;
4450
}
45-
pdc.set(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING, "false");
51+
pdc.set(toggle, PersistentDataType.STRING, "false");
4652
return false;
4753
}
4854
@Override

src/main/java/adhdmc/scythe/InteractListener.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package adhdmc.scythe;
22

3+
import com.destroystokyo.paper.MaterialTags;
34
import org.bukkit.Bukkit;
45
import org.bukkit.Material;
56
import org.bukkit.NamespacedKey;
7+
import org.bukkit.Tag;
68
import org.bukkit.block.Block;
79
import org.bukkit.block.BlockFace;
810
import org.bukkit.block.data.Ageable;
911
import org.bukkit.block.data.type.Cocoa;
1012
import org.bukkit.entity.Player;
1113
import org.bukkit.event.EventHandler;
14+
import org.bukkit.event.EventPriority;
1215
import org.bukkit.event.Listener;
1316
import org.bukkit.event.player.PlayerInteractEvent;
1417
import org.bukkit.inventory.EquipmentSlot;
@@ -21,26 +24,23 @@
2124

2225
public class InteractListener implements Listener {
2326

24-
List<Material> farmables = Arrays.asList(Material.CARROTS, Material.COCOA, Material.NETHER_WART, Material.POTATOES, Material.WHEAT, Material.BEETROOTS);
25-
26-
@EventHandler
27+
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
2728
public void rightClickFarmable(PlayerInteractEvent event) {
2829
if (event.getClickedBlock() == null) {
2930
return;
3031
}
3132
if (event.getHand() == null || event.getHand().equals(EquipmentSlot.OFF_HAND)) {
3233
return;
3334
}
34-
if (!(farmables.contains(event.getClickedBlock().getType()))) {
35+
Material clickedMaterial = event.getClickedBlock().getType();
36+
if (!Tag.CROPS.isTagged(clickedMaterial) && clickedMaterial != Material.COCOA && clickedMaterial != Material.NETHER_WART) {
3537
return;
3638
}
3739
Player player = event.getPlayer();
3840
Block clickedSpot = event.getClickedBlock();
39-
Material clickedMaterial = clickedSpot.getType();
4041
Ageable clickedCrop = (Ageable) clickedSpot.getBlockData();
4142
ItemStack itemUsed = player.getInventory().getItemInMainHand();
42-
String itemUsedName = itemUsed.toString();
43-
BlockFace facing = null;
43+
BlockFace facing;
4444
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
4545
if (clickedCrop.getMaximumAge() != clickedCrop.getAge()) {
4646
return;
@@ -51,7 +51,7 @@ public void rightClickFarmable(PlayerInteractEvent event) {
5151
if (playerPDC.has(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING) && playerPDC.get(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING).equals("false")){
5252
return;
5353
}
54-
if (Scythe.plugin.getConfig().getBoolean("Require Hoe") && !itemUsedName.contains("_HOE")){
54+
if (MessageHandler.requireHoe && !MaterialTags.HOES.isTagged(itemUsed)){
5555
return;
5656
}
5757
if (clickedMaterial.equals(Material.COCOA)){

src/main/java/adhdmc/scythe/InteractListenerDependsCoreprotect.java

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package adhdmc.scythe;
22

3+
import com.destroystokyo.paper.MaterialTags;
34
import net.coreprotect.CoreProtect;
45
import net.coreprotect.CoreProtectAPI;
56
import org.bukkit.Bukkit;
67
import org.bukkit.Material;
78
import org.bukkit.NamespacedKey;
9+
import org.bukkit.Tag;
810
import org.bukkit.block.Block;
911
import org.bukkit.block.BlockFace;
1012
import org.bukkit.block.data.Ageable;
1113
import org.bukkit.block.data.type.Cocoa;
1214
import org.bukkit.entity.Player;
1315
import org.bukkit.event.EventHandler;
16+
import org.bukkit.event.EventPriority;
1417
import org.bukkit.event.Listener;
1518
import org.bukkit.event.player.PlayerInteractEvent;
1619
import org.bukkit.inventory.EquipmentSlot;
@@ -26,27 +29,25 @@
2629

2730
public class InteractListenerDependsCoreprotect implements Listener {
2831

29-
List<Material> farmables = Arrays.asList(Material.CARROTS, Material.COCOA, Material.NETHER_WART, Material.POTATOES, Material.WHEAT, Material.BEETROOTS);
3032
CoreProtectAPI api = getCoreProtect();
3133

32-
@EventHandler
34+
@EventHandler(priority = EventPriority.NORMAL, ignoreCancelled = true)
3335
public void rightClickFarmable(PlayerInteractEvent event) {
3436
if (event.getClickedBlock() == null) {
3537
return;
3638
}
3739
if (event.getHand() == null || event.getHand().equals(EquipmentSlot.OFF_HAND)) {
3840
return;
3941
}
40-
if (!(farmables.contains(event.getClickedBlock().getType()))) {
42+
Material clickedMaterial = event.getClickedBlock().getType();
43+
if (!Tag.CROPS.isTagged(clickedMaterial) && clickedMaterial != Material.COCOA && clickedMaterial != Material.NETHER_WART) {
4144
return;
4245
}
4346
Player player = event.getPlayer();
4447
Block clickedSpot = event.getClickedBlock();
45-
Material clickedMaterial = clickedSpot.getType();
4648
Ageable clickedCrop = (Ageable) clickedSpot.getBlockData();
4749
ItemStack itemUsed = player.getInventory().getItemInMainHand();
48-
String itemUsedName = itemUsed.toString();
49-
BlockFace facing = null;
50+
BlockFace facing;
5051
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
5152
if (clickedCrop.getMaximumAge() != clickedCrop.getAge()) {
5253
return;
@@ -57,7 +58,7 @@ public void rightClickFarmable(PlayerInteractEvent event) {
5758
if (playerPDC.has(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING) && playerPDC.get(new NamespacedKey(Scythe.plugin, "toggle"), PersistentDataType.STRING).equals("false")){
5859
return;
5960
}
60-
if (Scythe.plugin.getConfig().getBoolean("Require Hoe") && !itemUsedName.contains("_HOE")){
61+
if (MessageHandler.requireHoe && !MaterialTags.HOES.isTagged(itemUsed)) {
6162
return;
6263
}
6364
if (clickedMaterial.equals(Material.COCOA)){
@@ -96,23 +97,19 @@ public void rightClickFarmable(PlayerInteractEvent event) {
9697
}
9798
private CoreProtectAPI getCoreProtect() {
9899
Plugin plugin = getServer().getPluginManager().getPlugin("CoreProtect");
99-
100100
// Check that CoreProtect is loaded
101101
if (!(plugin instanceof CoreProtect)) {
102102
return null;
103103
}
104-
105104
// Check that the API is enabled
106105
CoreProtectAPI CoreProtect = ((CoreProtect) plugin).getAPI();
107106
if (!CoreProtect.isEnabled()) {
108107
return null;
109108
}
110-
111109
// Check that a compatible version of the API is loaded
112110
if (CoreProtect.APIVersion() < 9) {
113111
return null;
114112
}
115-
116113
return CoreProtect;
117114
}
118115
}

0 commit comments

Comments
 (0)