Skip to content

Commit b393bff

Browse files
Add consume option
1 parent e3af89e commit b393bff

5 files changed

Lines changed: 61 additions & 1 deletion

File tree

readme.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ QuickWaystones is a Minecraft plugin that brings the convenience of instant trav
77
- **UUIDs for IDs:** Allows multiple waystones to have the same name and not override each other.
88
- **World Specific Icons:** The 3 dimensions in Minecraft have their own block as the icon in the menu (Grass Block, Netherrack, End Stone).
99
- **Alphabetical Sorting:** Waystones are now sorted alphabetically by name in the GUI.
10+
- **Consumable Passes:** Optional setting to remove waystone passes after use (`/quickwaystones setConsumeWaystonePass <true|false>`).
1011

1112
## Features
1213
### 🚩 **Place and Use Waystones**

src/main/java/fun/pozzoo/quickwaystones/commands/MainCommand.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public MainCommand(QuickWaystones plugin) {
2222
// Register subcommands
2323
subCommands.put("setHideUndiscoveredWaystones", new SetHideUndiscoveredWaystones(plugin));
2424
subCommands.put("setEnableWaystonePass", new SetEnableWaystonePass(plugin));
25+
subCommands.put("setConsumeWaystonePass", new SetConsumeWaystonePass(plugin));
2526
subCommands.put("setXpCost", new SetXpCost(plugin));
2627
subCommands.put("help", new HelpSubCommand(subCommands));
2728
}
@@ -68,7 +69,7 @@ public List<String> onTabComplete(
6869
.toList();
6970
}
7071

71-
if (args.length == 2 && (args[0].equals("setHideUndiscoveredWaystones") || args[0].equals("setEnableWaystonePass"))) {
72+
if (args.length == 2 && (args[0].equals("setHideUndiscoveredWaystones") || args[0].equals("setEnableWaystonePass") || args[0].equals("setConsumeWaystonePass"))) {
7273
return Stream.of("true", "false")
7374
.filter(v -> v.startsWith(args[1].toLowerCase()))
7475
.toList();
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package fun.pozzoo.quickwaystones.commands;
2+
3+
import fun.pozzoo.quickwaystones.QuickWaystones;
4+
import org.bukkit.command.CommandSender;
5+
6+
public class SetConsumeWaystonePass implements SubCommand {
7+
8+
private final QuickWaystones plugin;
9+
10+
public SetConsumeWaystonePass(QuickWaystones plugin) {
11+
this.plugin = plugin;
12+
}
13+
14+
@Override
15+
public String getName() {
16+
return "setConsumeWaystonePass";
17+
}
18+
19+
@Override
20+
public String getDescription() {
21+
return "Enable or disable consuming waystone pass on use";
22+
}
23+
24+
@Override
25+
public String getUsage() {
26+
return "/quickWaystones setConsumeWaystonePass <true|false>";
27+
}
28+
29+
@Override
30+
public void execute(CommandSender sender, String[] args) {
31+
if (args.length != 2) {
32+
sender.sendMessage("§cUsage: " + getUsage());
33+
return;
34+
}
35+
36+
boolean enabled;
37+
if (args[1].equalsIgnoreCase("true")) {
38+
enabled = true;
39+
} else if (args[1].equalsIgnoreCase("false")) {
40+
enabled = false;
41+
} else {
42+
sender.sendMessage("§cValue must be true or false.");
43+
return;
44+
}
45+
46+
plugin.getConfig().set("Settings.ConsumeWaystonePass", enabled);
47+
plugin.saveConfig();
48+
49+
sender.sendMessage("§aConsume waystone pass set to §e" + enabled);
50+
}
51+
}

src/main/java/fun/pozzoo/quickwaystones/events/OnPlayerInteract.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ public void onPlayerInteract(PlayerInteractEvent event) {
3838
if (this.plugin.getConfig().getBoolean("Settings.EnableWaystonePass") && item.getType() == Material.PAPER && QuickWaystones.getWaystonePass().checkKey(item) && (event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_AIR)) {
3939
String waystoneID = QuickWaystones.getWaystonePass().getWaystoneID(item);
4040

41+
QuickWaystones.getPlayerAccess().computeIfAbsent(player.getUniqueId(), k -> new HashSet<>());
42+
4143
if (QuickWaystones.getPlayerAccess().get(player.getUniqueId()).contains(waystoneID)) {
4244
player.playSound(player, Sound.ENTITY_GENERIC_EXTINGUISH_FIRE, 0.1f, 1);
4345
player.sendMessage(StringUtils.formatString("<gold>" + this.plugin.getConfig().getString("Messages.WaystoneAlreadyDiscovered")));
@@ -49,6 +51,10 @@ public void onPlayerInteract(PlayerInteractEvent event) {
4951
QuickWaystones.getPlayerAccess().get(player.getUniqueId()).add(waystoneID);
5052
QuickWaystones.saveData();
5153

54+
if (this.plugin.getConfig().getBoolean("Settings.ConsumeWaystonePass", false)) {
55+
item.setAmount(item.getAmount() - 1);
56+
}
57+
5258
return;
5359
}
5460

src/main/resources/config.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
Settings:
22
HideUndiscoveredWaystones: true
33
EnableWaystonePass: true
4+
ConsumeWaystonePass: false
45
XpCost: 5
56
Messages:
67
WaystoneActivated: "Waystone Activated"

0 commit comments

Comments
 (0)