51 lines
2.1 KiB
Java
51 lines
2.1 KiB
Java
package com.songoda.epicenchants.listeners.item;
|
|
|
|
import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTCompound;
|
|
import com.songoda.core.third_party.de.tr7zw.nbtapi.NBTItem;
|
|
import com.songoda.epicenchants.EpicEnchants;
|
|
import com.songoda.epicenchants.objects.Enchant;
|
|
import com.songoda.epicenchants.utils.single.RomanNumber;
|
|
import org.bukkit.event.inventory.InventoryClickEvent;
|
|
import org.bukkit.inventory.ItemStack;
|
|
|
|
import static com.songoda.epicenchants.utils.single.GeneralUtils.getRandomElement;
|
|
|
|
public class BlackScrollListener extends ItemListener {
|
|
public BlackScrollListener(EpicEnchants instance) {
|
|
super(instance);
|
|
}
|
|
|
|
@Override
|
|
void onApply(InventoryClickEvent event, NBTItem cursor, NBTItem current) {
|
|
if (!cursor.hasKey("black-scroll") || !cursor.getBoolean("black-scroll")) {
|
|
return;
|
|
}
|
|
|
|
event.setCancelled(true);
|
|
NBTCompound compound = current.getCompound("enchants");
|
|
|
|
if (compound == null || compound.getKeys().isEmpty()) {
|
|
instance.getLocale().getMessage("blackscroll.noenchants")
|
|
.sendPrefixedMessage(event.getWhoClicked());
|
|
return;
|
|
}
|
|
|
|
String id = getRandomElement(compound.getKeys());
|
|
int level = compound.getInteger(id);
|
|
Enchant enchant = instance.getEnchantManager().getValueUnsafe(id);
|
|
ItemStack toSet = instance.getEnchantUtils().removeEnchant(event.getCurrentItem(), enchant);
|
|
|
|
event.getWhoClicked().getInventory().addItem(enchant.getBook().get(enchant, level, cursor.getInteger("success-rate"), 100));
|
|
event.setCurrentItem(toSet);
|
|
|
|
instance.getLocale().getMessage("blackscroll.success")
|
|
.processPlaceholder("enchant", enchant.getIdentifier())
|
|
.processPlaceholder("group_color", enchant.getGroup().getColor())
|
|
.processPlaceholder("group_name", enchant.getGroup().getName())
|
|
.processPlaceholder("level", RomanNumber.toRoman(level))
|
|
.sendPrefixedMessage(event.getWhoClicked());
|
|
|
|
useItem(event);
|
|
}
|
|
}
|