mirror of
https://github.com/alexcrea/CustomAnvil.git
synced 2026-08-28 08:25:56 +02:00
This commit is contained in:
parent
d469171e4d
commit
497a3e84bc
4 changed files with 28 additions and 15 deletions
|
|
@ -128,7 +128,7 @@ public class EnchantmentApi {
|
||||||
* @return The custom anvil enchantment of this key. null if not found.
|
* @return The custom anvil enchantment of this key. null if not found.
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public static CAEnchantment getByKey(@NotNull NamespacedKey key) {
|
public static CAEnchantment getByKey(@Nullable NamespacedKey key) {
|
||||||
return CAEnchantment.getByKey(key);
|
return CAEnchantment.getByKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -230,7 +230,7 @@ public interface CAEnchantment {
|
||||||
* @param key The enchantment key
|
* @param key The enchantment key
|
||||||
* @return Array of enchantment.
|
* @return Array of enchantment.
|
||||||
*/
|
*/
|
||||||
static @Nullable CAEnchantment getByKey(@NotNull NamespacedKey key){
|
static @Nullable CAEnchantment getByKey(@Nullable NamespacedKey key){
|
||||||
return CAEnchantmentRegistry.getInstance().getByKey(key);
|
return CAEnchantmentRegistry.getInstance().getByKey(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -151,7 +151,7 @@ public class CAEnchantmentRegistry {
|
||||||
* @return Registered enchantment. null if absent.
|
* @return Registered enchantment. null if absent.
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
public CAEnchantment getByKey(@NotNull NamespacedKey key) {
|
public CAEnchantment getByKey(@Nullable NamespacedKey key) {
|
||||||
return byKeyMap.get(key);
|
return byKeyMap.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,10 +2,14 @@ package xyz.alexcrea.cuanvil.command
|
||||||
|
|
||||||
import io.delilaheve.CustomAnvil
|
import io.delilaheve.CustomAnvil
|
||||||
import io.delilaheve.util.ConfigOptions
|
import io.delilaheve.util.ConfigOptions
|
||||||
|
import io.delilaheve.util.ItemUtil.isEnchantedBook
|
||||||
|
import org.bukkit.Material
|
||||||
|
import org.bukkit.NamespacedKey
|
||||||
import org.bukkit.command.Command
|
import org.bukkit.command.Command
|
||||||
import org.bukkit.command.CommandSender
|
import org.bukkit.command.CommandSender
|
||||||
import org.bukkit.entity.HumanEntity
|
import org.bukkit.entity.HumanEntity
|
||||||
import xyz.alexcrea.cuanvil.api.EnchantmentApi
|
import xyz.alexcrea.cuanvil.api.EnchantmentApi
|
||||||
|
import xyz.alexcrea.cuanvil.enchant.CAEnchantment
|
||||||
import xyz.alexcrea.cuanvil.util.MaterialUtil.isAir
|
import xyz.alexcrea.cuanvil.util.MaterialUtil.isAir
|
||||||
|
|
||||||
class EnchantExecutor : CASubCommand() {
|
class EnchantExecutor : CASubCommand() {
|
||||||
|
|
@ -37,22 +41,18 @@ class EnchantExecutor : CASubCommand() {
|
||||||
sender.sendMessage("Missing enchantment parameter")
|
sender.sendMessage("Missing enchantment parameter")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
1 -> {
|
|
||||||
sender.sendMessage("Missing level parameter")
|
|
||||||
return true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val enchants = EnchantmentApi.getListByName(args[0].lowercase())
|
val enchant = firstEnchantment(args[0])
|
||||||
if (enchants.isEmpty()) {
|
if (enchant == null) {
|
||||||
sender.sendMessage("Enchantment not found: ${args[0]}")
|
sender.sendMessage("Enchantment not found: ${args[0]}")
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
val enchant = enchants.iterator().next()
|
val level = if (args.size > 1)
|
||||||
|
args[1].toIntOrNull()?.coerceIn(0, ConfigOptions.ENCHANT_LIMIT)
|
||||||
|
else 1
|
||||||
|
|
||||||
val level = args[1].toIntOrNull()?.coerceIn(0, ConfigOptions.ENCHANT_LIMIT)
|
|
||||||
if (level == null) {
|
if (level == null) {
|
||||||
sender.sendMessage("Invalid number: ${args[1]}")
|
sender.sendMessage("Invalid number: ${args[1]}")
|
||||||
return true
|
return true
|
||||||
|
|
@ -66,8 +66,15 @@ class EnchantExecutor : CASubCommand() {
|
||||||
|
|
||||||
if (level == 0) {
|
if (level == 0) {
|
||||||
enchant.removeFrom(inHand)
|
enchant.removeFrom(inHand)
|
||||||
|
|
||||||
|
if (inHand.isEnchantedBook() && EnchantmentApi.getEnchantments(inHand).isEmpty())
|
||||||
|
inHand.type = Material.BOOK
|
||||||
|
|
||||||
sender.sendMessage("${enchant.prettyName} removed")
|
sender.sendMessage("${enchant.prettyName} removed")
|
||||||
} else {
|
} else {
|
||||||
|
if (Material.BOOK == inHand.type)
|
||||||
|
inHand.type = Material.ENCHANTED_BOOK
|
||||||
|
|
||||||
enchant.addEnchantmentUnsafe(inHand, level)
|
enchant.addEnchantmentUnsafe(inHand, level)
|
||||||
sender.sendMessage("${enchant.prettyName} set to level $level")
|
sender.sendMessage("${enchant.prettyName} set to level $level")
|
||||||
}
|
}
|
||||||
|
|
@ -92,10 +99,8 @@ class EnchantExecutor : CASubCommand() {
|
||||||
sender: HumanEntity,
|
sender: HumanEntity,
|
||||||
name: String
|
name: String
|
||||||
): Collection<String> {
|
): Collection<String> {
|
||||||
val enchants = EnchantmentApi.getListByName(name.lowercase())
|
val enchant = firstEnchantment(name) ?: return listOf()
|
||||||
if (enchants.isEmpty()) return listOf()
|
|
||||||
|
|
||||||
val enchant = enchants.iterator().next()
|
|
||||||
val limit = ConfigOptions.enchantLimit(enchant)
|
val limit = ConfigOptions.enchantLimit(enchant)
|
||||||
val result = mutableListOf<String>()
|
val result = mutableListOf<String>()
|
||||||
|
|
||||||
|
|
@ -110,4 +115,12 @@ class EnchantExecutor : CASubCommand() {
|
||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun firstEnchantment(name: String): CAEnchantment? {
|
||||||
|
val enchants = EnchantmentApi.getListByName(name.lowercase())
|
||||||
|
if (!enchants.isEmpty())
|
||||||
|
return enchants.iterator().next()
|
||||||
|
|
||||||
|
return EnchantmentApi.getByKey(NamespacedKey.fromString(name))
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue