Skip to content

Commit 5c49077

Browse files
authored
Merge pull request #121 from TheNextLvl-net/unsafe-enchantments
Added option to allow unsafe enchantments
2 parents 08c58ab + 77c0b89 commit 5c49077

File tree

3 files changed

+13
-4
lines changed

3 files changed

+13
-4
lines changed

src/main/java/net/thenextlvl/tweaks/command/item/EnchantCommand.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ public void register(Commands registrar) {
4242
.requires(stack -> stack.getSender() instanceof Player player
4343
&& player.hasPermission("tweaks.command.enchant"))
4444
.then(Commands.argument("enchantment", ArgumentTypes.resourceKey(RegistryKey.ENCHANTMENT))
45-
.suggests(new EnchantSuggestionProvider())
45+
.suggests(new EnchantSuggestionProvider(plugin))
4646
.then(Commands.argument("level", IntegerArgumentType.integer(1, max))
4747
.suggests(this::suggestLevels)
4848
.executes(context -> enchant(context, context.getArgument("level", int.class))))
@@ -79,7 +79,7 @@ private int enchant(CommandContext<CommandSourceStack> context, int level) {
7979
plugin.bundle().sendMessage(player, "command.hold.item");
8080
return 0;
8181
}
82-
if (!enchantment.canEnchantItem(item)) {
82+
if (!plugin.config().general.unsafeEnchantments && !enchantment.canEnchantItem(item)) {
8383
plugin.bundle().sendMessage(player, "command.enchantment.applicable",
8484
Placeholder.component("item", Component.translatable(item)));
8585
return 0;

src/main/java/net/thenextlvl/tweaks/command/suggestion/EnchantSuggestionProvider.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,28 @@
77
import io.papermc.paper.command.brigadier.CommandSourceStack;
88
import io.papermc.paper.registry.RegistryAccess;
99
import io.papermc.paper.registry.RegistryKey;
10+
import net.thenextlvl.tweaks.TweaksPlugin;
1011
import org.bukkit.entity.Player;
1112
import org.jspecify.annotations.NullMarked;
1213

1314
import java.util.concurrent.CompletableFuture;
1415

1516
@NullMarked
1617
public class EnchantSuggestionProvider implements SuggestionProvider<CommandSourceStack> {
18+
private final TweaksPlugin plugin;
19+
20+
public EnchantSuggestionProvider(TweaksPlugin plugin) {
21+
this.plugin = plugin;
22+
}
23+
1724
@Override
1825
public CompletableFuture<Suggestions> getSuggestions(CommandContext<CommandSourceStack> context, SuggestionsBuilder builder) {
1926
if (!(context.getSource().getSender() instanceof Player player)) return builder.buildFuture();
2027
var item = player.getInventory().getItemInMainHand();
2128
RegistryAccess.registryAccess().getRegistry(RegistryKey.ENCHANTMENT).stream()
22-
.filter(enchantment -> enchantment.canEnchantItem(item))
23-
.filter(enchantment -> item.getEnchantments().containsKey(enchantment)
29+
.filter(enchantment -> plugin.config().general.unsafeEnchantments || enchantment.canEnchantItem(item))
30+
.filter(enchantment -> plugin.config().general.unsafeEnchantments
31+
|| item.getEnchantments().containsKey(enchantment)
2432
|| item.getEnchantments().keySet().stream().noneMatch(enchantment::conflictsWith))
2533
.map(enchantment -> enchantment.key().asString())
2634
.filter(s -> s.contains(builder.getRemaining()))

src/main/java/net/thenextlvl/tweaks/model/PluginConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public static class GeneralConfig {
2626
public @SerializedName("message-deletion-timeout") long messageDeletionTimeout = TimeUnit.MINUTES.toMillis(10);
2727
public @SerializedName("back-buffer-stack-size") int backBufferStackSize = 5;
2828
public @SerializedName("default-permission-level") byte defaultPermissionLevel = -1;
29+
public @SerializedName("allow-unsafe-enchantments") boolean unsafeEnchantments = false;
2930
public @SerializedName("enchantment-overflow") boolean enchantmentOverflow = false;
3031
public @SerializedName("override-join-message") boolean overrideJoinMessage = true;
3132
public @SerializedName("override-quit-message") boolean overrideQuitMessage = true;

0 commit comments

Comments
 (0)