Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Verification Seal #34

Draft
wants to merge 2 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,8 @@ private static Set<CustomEnchantment> buildCustomEnchantments(HoloItemsRevamp pl
new Memento(plugin),
new TideRider(plugin),
new Backdash(plugin),
new Plow(plugin)
new Plow(plugin),
new VerificationSeal(plugin)
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
Expand All @@ -24,8 +26,11 @@ default void onProjectileLaunch(ProjectileLaunchEvent event, ItemStack itemStack
}

default void onPlayerInteract(PlayerInteractEvent event, ItemStack itemStack) {
}
}

default void onPlayerToggleSneak(PlayerToggleSneakEvent event, ItemStack itemStack) {
}

default void onInventoryClicked(InventoryClickEvent event, ItemStack itemStack) {
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Method name should match api's event name. No exceptions

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.event.entity.PlayerDeathEvent;
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerToggleSneakEvent;
import org.bukkit.inventory.ItemStack;
Expand Down Expand Up @@ -99,4 +100,17 @@ public void onPlayerToggleSneak(PlayerToggleSneakEvent event) {
});
}
}

@EventHandler(ignoreCancelled = true)
public void onInventoryClicked(InventoryClickEvent event) {
final var stack = event.getCurrentItem();
if(stack == null) {
return;
}
stack.getEnchantments().keySet().forEach(enchantment -> {
if (enchantment instanceof EnchantmentAbility ability) {
ability.onInventoryClicked(event, stack);
}
});
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -867,7 +867,7 @@ public List<Component> getLore() {
}

private static Idol buildFubuki(HoloItemsRevamp plugin) {
return new Idol(new PlowBook(plugin)) {
return new Idol(new PlowBook(plugin), new VerificationSealBook(plugin)) {

@Override
public @NotNull String getSkinUrl() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
package xyz.holocons.mc.holoitemsrevamp.enchantment;

import com.strangeone101.holoitemsapi.enchantment.CustomEnchantment;
import com.strangeone101.holoitemsapi.enchantment.EnchantmentAbility;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import net.kyori.adventure.text.format.TextDecoration;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.inventory.CraftItemEvent;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import xyz.holocons.mc.holoitemsrevamp.HoloItemsRevamp;

public class VerificationSeal extends CustomEnchantment implements EnchantmentAbility {

private final HoloItemsRevamp plugin;

public VerificationSeal(HoloItemsRevamp plugin) {
super(plugin, "verification_seal");
this.plugin = plugin;
}

@Override
public int getMaxLevel() {
return 1;
}

@Override
public boolean conflictsWith(@NotNull Enchantment enchantment) {
return false;
}

@Override
public boolean canEnchantItem(@NotNull ItemStack itemStack) {
return itemStack.getType() == Material.FILLED_MAP;
}

@Override
public @NotNull Component displayName(int level) {
return Component.text()
.color(NamedTextColor.GRAY)
.decoration(TextDecoration.ITALIC, false)
.append(Component.text("Verification Seal"))
.build();
}

@Override
public int getCostMultiplier() {
return 12;
}

@Override
public void onInventoryClicked(InventoryClickEvent event, ItemStack itemStack) {
if(event instanceof CraftItemEvent || event.getInventory().getType() == InventoryType.CARTOGRAPHY) {
event.setCancelled(true);
}
else {
final var clickedInventory = event.getClickedInventory();
if(clickedInventory != null && clickedInventory.getType() == InventoryType.CARTOGRAPHY) {
event.setCancelled(true);
}
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
package xyz.holocons.mc.holoitemsrevamp.item;

import com.strangeone101.holoitemsapi.enchantment.CustomEnchantment;
import com.strangeone101.holoitemsapi.enchantment.EnchantManager;
import com.strangeone101.holoitemsapi.enchantment.Enchantable;
import com.strangeone101.holoitemsapi.item.CustomItem;
import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.format.NamedTextColor;
import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.Recipe;
import org.bukkit.inventory.ShapedRecipe;
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
import xyz.holocons.mc.holoitemsrevamp.HoloItemsRevamp;

import java.util.List;

public class VerificationSealBook extends CustomItem implements Enchantable {

private static final String name = "verification_seal";
private static final Material material = Material.ENCHANTED_BOOK;
private static final Component displayName = Component.text("Verification Seal", NamedTextColor.WHITE);
private static final List<Component> lore = List.of(
Component.text("Seal maps so they can't be copied/duplicated", NamedTextColor.WHITE)
);

private final EnchantManager enchantManager;

public VerificationSealBook(HoloItemsRevamp plugin) {
super(plugin, name, material, displayName, lore);
this.enchantManager = plugin.getEnchantManager();
this.register();
}

@Override
protected Recipe getRecipe() {
final var recipe = new ShapedRecipe(getKey(), buildStack(null));
recipe.shape(
"aaa",
"aba",
"aaa"
);
recipe.setIngredient('a', Material.DIAMOND);
recipe.setIngredient('b', Material.WHITE_CANDLE);
return recipe;
}

@Override
public Enchantment getEnchantment() {
return CustomEnchantment.getByKey(getKey());
}

@Override
public ItemStack applyEnchantment(ItemStack itemStack) {
var enchantedStack = itemStack.clone();
var enchantedMeta = (EnchantmentStorageMeta) enchantedStack.getItemMeta();

if (enchantedMeta.addStoredEnchant(getEnchantment(), 1, false)) {
enchantedStack.setItemMeta(enchantedMeta);
enchantManager.removeCustomEnchantmentLore(enchantedStack);
enchantManager.applyCustomEnchantmentLore(enchantedStack);
return enchantedStack;
} else {
return null;
}
}
}
Loading