Skip to content

Commit 3a74ab5

Browse files
authored
Merge pull request #15 from YouHaveTrouble/master
cleanup, small optimizations
2 parents fdbd8ac + 68b4fb9 commit 3a74ab5

9 files changed

Lines changed: 57 additions & 52 deletions

File tree

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

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,14 +13,14 @@
1313

1414
public class CommandHandler implements CommandExecutor, TabExecutor {
1515

16-
public static HashMap<String, SubCommand> subcommandList = new HashMap<String, SubCommand>();
16+
public static HashMap<String, SubCommand> subcommandList = new HashMap<>();
1717
Map<ConfigValidator.Message, String> msgs = ConfigValidator.getLocaleMap();
1818
MiniMessage mM = MiniMessage.miniMessage();
1919

2020
//TY Peashooter101
2121
@Override
2222
public List<String> onTabComplete(CommandSender sender, Command command, String label, String[] args) {
23-
ArrayList<String> subCommands1 = new ArrayList<String>(Arrays.asList("help", "toggle", "reload"));
23+
ArrayList<String> subCommands1 = new ArrayList<>(Arrays.asList("help", "toggle", "reload"));
2424
if (args.length == 1) {
2525
return subCommands1;
2626
}
@@ -32,13 +32,26 @@ public List<String> onTabComplete(CommandSender sender, Command command, String
3232
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
3333
//Checking for arguments
3434
if (args.length == 0) {
35-
sender.sendMessage(mM.deserialize("<green><click:open_url:'https://github.com/RhythmicSys/VillagerInfo'><hover:show_text:'<gray>Click here to visit the GitHub!'>VillagerInfo | Version:<version> </hover></click>\nAuthors: <gold> Rhythmic </gold> | <gold>Peashooter101</gold>", Placeholder.parsed("version", String.valueOf(VillagerInfo.version))));
35+
String url = VillagerInfo.plugin.getDescription().getWebsite();
36+
String version = VillagerInfo.plugin.getDescription().getVersion();
37+
List<String> authors = new ArrayList<>();
38+
for (String authorName : VillagerInfo.plugin.getDescription().getAuthors()) {
39+
authors.add(String.format("<gold> %s </gold>", authorName));
40+
}
41+
String authorsString = String.join(" | ", authors);
42+
sender.sendMessage(mM.deserialize(
43+
"<green><click:open_url:'<url>'><hover:show_text:'<gray>Click here to visit the GitHub!'>VillagerInfo | Version:<version> </hover></click>\nAuthors: <authors>",
44+
Placeholder.parsed("version", version),
45+
Placeholder.parsed("authors", authorsString),
46+
Placeholder.unparsed("url", url)
47+
)
48+
);
3649
return true;
3750
}
3851
//if has an argument, check to see if it's contained in the list of arguments
3952
String command = args[0].toLowerCase();
4053
if (subcommandList.containsKey(command)) {
41-
subcommandList.get(command).doThing(sender, Arrays.copyOfRange(args, 1, args.length));
54+
subcommandList.get(command).execute(sender, Arrays.copyOfRange(args, 1, args.length));
4255
} else {
4356
sender.sendMessage(mM.deserialize(msgs.get(ConfigValidator.Message.NO_COMMAND)));
4457
}

src/main/java/adhdmc/villagerinfo/Commands/SubCommand.java

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

77
public abstract class SubCommand {
88

9-
private String name;
10-
private String description;
11-
private String syntax;
9+
private final String name;
10+
private final String description;
11+
private final String syntax;
1212

1313
public SubCommand(String name, String description, String syntax) {
1414
this.name = name;
@@ -28,7 +28,7 @@ public String getSyntax() {
2828
return syntax;
2929
}
3030

31-
public abstract void doThing(CommandSender sender, String[] args);
31+
public abstract void execute(CommandSender sender, String[] args);
3232

3333
public abstract List<String> getSubcommandArguments(CommandSender sender, String[] args);
3434

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public HelpCommand() {
1717
}
1818

1919
@Override
20-
public void doThing(CommandSender sender, String[] args) {
20+
public void execute(CommandSender sender, String[] args) {
2121
Map<Message, String> msgs = ConfigValidator.getLocaleMap();
2222
MiniMessage mM = MiniMessage.miniMessage();
2323

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public ReloadCommand() {
1919

2020

2121
@Override
22-
public void doThing(CommandSender sender, String[] args) {
22+
public void execute(CommandSender sender, String[] args) {
2323
Map<Message, String> msgs = ConfigValidator.getLocaleMap();
2424
MiniMessage mM = MiniMessage.miniMessage();
2525
if (!(sender instanceof Player) || sender.hasPermission(VillagerInfo.reloadCommandPermission)) {

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

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import adhdmc.villagerinfo.Config.ConfigValidator.Message;
66
import adhdmc.villagerinfo.VillagerInfo;
77
import net.kyori.adventure.text.minimessage.MiniMessage;
8-
import org.bukkit.NamespacedKey;
98
import org.bukkit.command.CommandSender;
109
import org.bukkit.entity.Player;
1110
import org.bukkit.persistence.PersistentDataContainer;
@@ -15,17 +14,14 @@
1514
import java.util.Map;
1615

1716
public class ToggleCommand extends SubCommand {
18-
NamespacedKey infoToggle = new NamespacedKey(VillagerInfo.plugin, "infoToggle");
1917
Map<Message, String> msgs = ConfigValidator.getLocaleMap();
20-
String infoOn = VillagerInfo.toggleInfoOn;
21-
String infoOff = VillagerInfo.toggleInfoOff;
2218

2319
public ToggleCommand() {
2420
super("toggle", "Toggles villager info on and off", "/vill toggle");
2521
}
2622

2723
@Override
28-
public void doThing(CommandSender sender, String[] args) {
24+
public void execute(CommandSender sender, String[] args) {
2925
MiniMessage mM = MiniMessage.miniMessage();
3026
if (!(sender instanceof Player)) {
3127
sender.sendMessage(mM.deserialize(msgs.get(Message.NOT_A_PLAYER)));
@@ -44,14 +40,14 @@ public void doThing(CommandSender sender, String[] args) {
4440
.append(mM.deserialize(msgs.get(Message.TOGGLE_OFF))));
4541
}
4642

47-
private boolean toggleSetting(Player p) {
48-
PersistentDataContainer playerPDC = p.getPersistentDataContainer();
49-
String togglePDC = playerPDC.get(infoToggle, PersistentDataType.STRING);
50-
if (togglePDC == null || togglePDC.equals(infoOn)) {
51-
playerPDC.set(infoToggle, PersistentDataType.STRING, infoOff);
43+
private boolean toggleSetting(Player player) {
44+
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
45+
byte togglePDC = playerPDC.getOrDefault(VillagerInfo.getInfoEnabledKey(), PersistentDataType.BYTE, (byte)0);
46+
if (togglePDC == 1) {
47+
playerPDC.set(VillagerInfo.getInfoEnabledKey(), PersistentDataType.BYTE, (byte)0);
5248
return false;
5349
}
54-
playerPDC.set(infoToggle, PersistentDataType.STRING, infoOn);
50+
playerPDC.set(VillagerInfo.getInfoEnabledKey(), PersistentDataType.BYTE, (byte)1);
5551
return true;
5652
}
5753

src/main/java/adhdmc/villagerinfo/VillagerHandling/HighlightHandling.java

Lines changed: 13 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,46 +2,40 @@
22

33
import adhdmc.villagerinfo.Config.ConfigValidator;
44
import adhdmc.villagerinfo.VillagerInfo;
5+
import org.bukkit.Bukkit;
56
import org.bukkit.Location;
67
import org.bukkit.NamespacedKey;
78
import org.bukkit.entity.Shulker;
89
import org.bukkit.event.entity.CreatureSpawnEvent;
910
import org.bukkit.persistence.PersistentDataContainer;
1011
import org.bukkit.persistence.PersistentDataType;
11-
import org.bukkit.scheduler.BukkitRunnable;
1212

1313
import java.util.HashMap;
1414
import java.util.UUID;
1515

1616
import static org.bukkit.entity.EntityType.SHULKER;
1717

18-
public class HighlightHandling{
19-
static NamespacedKey highlightStatus = new NamespacedKey(VillagerInfo.plugin, "highlightStatus");
20-
static String currentlyHighlighted = VillagerInfo.isCurrentlyHighlighted;
21-
static String notHighlighted = VillagerInfo.isNotCurrentlyHighlighted;
18+
public class HighlightHandling {
19+
static NamespacedKey highlightStatus = new NamespacedKey(VillagerInfo.plugin, "highlighted");
2220
public static HashMap<UUID, Shulker> workstationShulker = new HashMap<>();
2321
public static HashMap<UUID, PersistentDataContainer> villagerPDC = new HashMap<>();
2422

2523

26-
2724
public static void villagerJobsiteHighlight(PersistentDataContainer villPDC, UUID villUUID, Location villPOI) {
28-
if (villPDC.getOrDefault(highlightStatus, PersistentDataType.STRING, notHighlighted).equals(currentlyHighlighted)) return;
29-
villPDC.set(highlightStatus, PersistentDataType.STRING, currentlyHighlighted);
25+
if (villPDC.getOrDefault(highlightStatus, PersistentDataType.BYTE, (byte)0) == 1) return;
26+
villPDC.set(highlightStatus, PersistentDataType.BYTE, (byte)1);
27+
villagerPDC.put(villUUID, villPDC);
28+
spawnShulker(villUUID, villPOI);
29+
Bukkit.getScheduler().runTaskLater(VillagerInfo.plugin, () -> {
30+
killShulker(villUUID);
31+
villPDC.set(highlightStatus, PersistentDataType.BYTE, (byte)0);
3032
villagerPDC.put(villUUID, villPDC);
31-
spawnShulker(villUUID, villPOI);
32-
new BukkitRunnable() {
33-
@Override
34-
public void run() {
35-
killShulker(villUUID);
36-
villPDC.set(highlightStatus, PersistentDataType.STRING, notHighlighted);
37-
villagerPDC.put(villUUID, villPDC);
38-
}
39-
}.runTaskLater(VillagerInfo.plugin, 20L * ConfigValidator.configTime);
33+
}, 20L * ConfigValidator.configTime);
4034
}
4135

4236
private static void spawnShulker(UUID villUUID, Location location) {
43-
Shulker spawnedShulker = (Shulker) location.getWorld().spawnEntity(location, SHULKER, CreatureSpawnEvent.SpawnReason.CUSTOM, (Entity) -> {
44-
Shulker highlightbox = (Shulker) Entity;
37+
Shulker spawnedShulker = (Shulker) location.getWorld().spawnEntity(location, SHULKER, CreatureSpawnEvent.SpawnReason.CUSTOM, (entity) -> {
38+
Shulker highlightbox = (Shulker) entity;
4539
highlightbox.setAI(false);
4640
highlightbox.setAware(false);
4741
highlightbox.setCollidable(false);

src/main/java/adhdmc/villagerinfo/VillagerHandling/VillagerHandler.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
import net.kyori.adventure.text.minimessage.MiniMessage;
1010
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
1111
import org.bukkit.Location;
12-
import org.bukkit.NamespacedKey;
1312
import org.bukkit.entity.Player;
1413
import org.bukkit.entity.Villager;
1514
import org.bukkit.entity.memory.MemoryKey;
@@ -30,14 +29,10 @@ public class VillagerHandler implements Listener {
3029
MiniMessage mM = MiniMessage.miniMessage();
3130
Map<Message, String> messages = ConfigValidator.getLocaleMap();
3231
Map<ConfigValidator.ToggleSetting, Boolean> toggleSettings = ConfigValidator.getToggleSettings();
33-
NamespacedKey infoToggle = new NamespacedKey(VillagerInfo.plugin, "infoToggle");
34-
String toggleOff = VillagerInfo.toggleInfoOff;
35-
3632

3733
@EventHandler(ignoreCancelled = true, priority = EventPriority.NORMAL)
3834
public void onVillagerClick(PlayerInteractEntityEvent event) {
3935
Player player = event.getPlayer();
40-
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
4136
if (event.getHand().equals(EquipmentSlot.OFF_HAND)) {
4237
return;
4338
}
@@ -47,8 +42,9 @@ public void onVillagerClick(PlayerInteractEntityEvent event) {
4742
if (!(event.getRightClicked() instanceof Villager villager)) {
4843
return;
4944
}
50-
String togglePDC = playerPDC.get(infoToggle, PersistentDataType.STRING);
51-
if (togglePDC != null && togglePDC.equals(toggleOff)) {
45+
PersistentDataContainer playerPDC = player.getPersistentDataContainer();
46+
byte togglePDC = playerPDC.getOrDefault(VillagerInfo.getInfoEnabledKey(), PersistentDataType.BYTE, (byte)0);
47+
if (togglePDC == 0) {
5248
return;
5349
}
5450
if (!player.hasPermission("villagerinfo.use")) {

src/main/java/adhdmc/villagerinfo/VillagerInfo.java

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,17 +16,15 @@
1616
public final class VillagerInfo extends JavaPlugin {
1717
public static VillagerInfo plugin;
1818
public static LocaleConfig localeConfig;
19-
//These are for the PDC stuff because I manage to not be able to keep '0' and '1' straight in my head, for which is true or false
20-
public static final String toggleInfoOn = "toggleInfoOn";
21-
public static final String toggleInfoOff = "toggleInfoOff";
2219
public static final String isCurrentlyHighlighted = "isCurrentlyHighlighted";
2320
public static final String isNotCurrentlyHighlighted = "isNotCurrentlyHighlighted";
24-
public static final double version = 2.0;
2521
//Permissions
2622
public static final String toggleCommandPermission = "villagerinfo.toggle";
2723
public static final String reloadCommandPermission = "villagerinfo.reload";
2824
public static final String usePermission = "villagerinfo.use";
2925

26+
private static NamespacedKey infoEnabledKey;
27+
3028
@Override
3129
public void onEnable() {
3230
plugin = this;
@@ -37,6 +35,7 @@ public void onEnable() {
3735
this.getLogger().severe("VillagerInfo relies on methods in classes not present on your server. Disabling plugin");
3836
this.getServer().getPluginManager().disablePlugin(this);
3937
}
38+
infoEnabledKey = new NamespacedKey(VillagerInfo.plugin, "infoEnabled");
4039
localeConfig = new LocaleConfig(this);
4140
localeConfig.getlocaleConfig();
4241
Metrics metrics = new Metrics(this, 13653);
@@ -61,4 +60,8 @@ private void registerCommands() {
6160
CommandHandler.subcommandList.put("toggle", new ToggleCommand());
6261
CommandHandler.subcommandList.put("reload", new ReloadCommand());
6362
}
63+
64+
public static NamespacedKey getInfoEnabledKey() {
65+
return infoEnabledKey;
66+
}
6467
}

src/main/resources/plugin.yml

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
name: VillagerInfo
2-
author: Rhythmic, Peashooter101
2+
authors:
3+
- Rhythmic
4+
- Peashooter101
35
description: Easier access to information from villager's brains generally only accessable through the /data command.
46
version: '${project.version}'
57
main: adhdmc.villagerinfo.VillagerInfo
68
api-version: 1.19
9+
website: https://github.com/RhythmicSys/VillagerInfo
710
commands:
811
vill:
912
description: base command for VillagerInfo

0 commit comments

Comments
 (0)