clean up enchantments 2

This commit is contained in:
Sen 2025-06-17 23:03:26 +02:00
parent 38d29ba9c8
commit 9930d1bb6d
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
14 changed files with 218 additions and 250 deletions

View file

@ -15,7 +15,7 @@ public class CommandMagic extends Command {
public CommandMagic() {
super("magic");
this.addEnum("enchantment", Enchantment.class, Enchantment.ENCHANTMENTS);
this.addEnum("enchantment", Enchantment.class, Enchantment.values());
this.setParamsOptional();
this.addInt("level", 1, 32767);
this.addFlag("remove", 'r');
@ -26,7 +26,7 @@ public class CommandMagic extends Command {
public void exec(CommandEnvironment env, Executor exec, Enchantment ench, Integer level, boolean remove, boolean force, ItemStack stack) {
if(remove) {
int current = EnchantmentHelper.getEnchantmentLevel(ench.id, stack);
int current = EnchantmentHelper.getEnchantmentLevel(ench, stack);
if(current == 0)
throw new RunException("%s hat die Verzauberung %s nicht", stack.getDisplayName(), ench.getDisplay());
stack.removeEnchantment(ench);
@ -39,10 +39,9 @@ public class CommandMagic extends Command {
throw new RunException("Level %d ist zu hoch für %s, maximal %d erlaubt", level, ench.getDisplay(), ench.getMaxLevel());
if(!ench.canApply(stack))
throw new RunException("Verzauberung %s kann nicht auf %s verwendet werden", ench.getDisplay(), stack.getDisplayName());
for(Entry<Integer, Integer> id : EnchantmentHelper.getEnchantments(stack).entrySet()) {
Enchantment enc = Enchantment.getEnchantmentById(id.getKey());
if(enc != ench && !ench.canApplyTogether(enc))
throw new RunException("Verzauberung %s kann nicht zusammen mit %s verwendet werden", ench.getDisplay(), enc.getFormattedName(id.getValue()));
for(Entry<Enchantment, Integer> id : EnchantmentHelper.getEnchantments(stack).entrySet()) {
if(id.getKey() != ench && !ench.canApplyTogether(id.getKey()))
throw new RunException("Verzauberung %s kann nicht zusammen mit %s verwendet werden", ench.getDisplay(), id.getKey().getFormattedName(id.getValue()));
}
}
stack.removeEnchantment(ench);