Skip to content

Commit

Permalink
Off Hand Item Use (#785)
Browse files Browse the repository at this point in the history
* Both hands Scrolls

* Both Hands XP

* Anti Scrambler Place

* Both Hands Dust
  • Loading branch information
TrueDarkLord committed Feb 16, 2024
1 parent 1716ebf commit bde17b1
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
import org.bukkit.Material;
import org.bukkit.Sound;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Item;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
Expand Down Expand Up @@ -66,24 +67,36 @@ public void openTinker(Player player) {

@EventHandler
public void onXPUse(PlayerInteractEvent event) {
if (!(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;

Player player = event.getPlayer();

if (!(event.getAction() == Action.RIGHT_CLICK_AIR || event.getAction() == Action.RIGHT_CLICK_BLOCK)) return;
if (useXP(player, event, true)) return;
useXP(player, event, false);
}

ItemStack item = methods.getItemInHand(player);
ItemMeta meta = item.getItemMeta();
private boolean useXP(Player player, PlayerInteractEvent event, boolean mainHand) {
ItemStack item = mainHand ? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand();

if (item.isEmpty() || !item.hasItemMeta()) return false;

if (!item.getItemMeta().getPersistentDataContainer().has(DataKeys.EXPERIENCE.getKey())) return false;

if (meta == null || !item.getItemMeta().getPersistentDataContainer().has(DataKeys.EXPERIENCE.getKey())) return;
int amount = Integer.parseInt(item.getItemMeta().getPersistentDataContainer().getOrDefault(DataKeys.EXPERIENCE.getKey(), PersistentDataType.STRING, "0"));

event.setCancelled(true);
methods.setItemInHand(player, methods.removeItem(item));
if (mainHand) {
player.getInventory().setItemInMainHand(methods.removeItem(item));
} else {
player.getInventory().setItemInOffHand(methods.removeItem(item));
}

if (Currency.isCurrency(Files.TINKER.getFile().getString("Settings.Currency")))
currencyAPI.giveCurrency(player, Currency.getCurrency(Files.TINKER.getFile().getString("Settings.Currency")), amount);

player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1);

return true;
}

@EventHandler(ignoreCancelled = true)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,28 +159,39 @@ public void onInventoryClick(InventoryClickEvent e) { //Dust Use
}

@EventHandler
public void openDust(PlayerInteractEvent e) {
Player player = e.getPlayer();
public void openDust(PlayerInteractEvent event) {
Player player = event.getPlayer();
FileConfiguration config = Files.CONFIG.getFile();

if (e.getAction() != Action.RIGHT_CLICK_AIR && e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if (event.getAction() != Action.RIGHT_CLICK_AIR && event.getAction() != Action.RIGHT_CLICK_BLOCK) return;

ItemStack item = methods.getItemInHand(player);
if (openAnyHandDust(player, event, true, config)) return;
openAnyHandDust(player, event, false, config);

if (!item.hasItemMeta()) return;
}

private boolean openAnyHandDust(Player player, PlayerInteractEvent event, boolean mainHand, FileConfiguration config) {
ItemStack item = mainHand ? player.getInventory().getItemInMainHand() : player.getInventory().getItemInOffHand();

if (item.isEmpty() || !item.hasItemMeta()) return false;

// PDC Start
DustData data = gson.fromJson(item.getItemMeta().getPersistentDataContainer().get(DataKeys.DUST.getKey(), PersistentDataType.STRING), DustData.class);
// PDC End
if (data == null) return;
if (data == null) return false;

if (data.getConfigName().equals(Dust.SUCCESS_DUST.getConfigName())) {
e.setCancelled(true);
event.setCancelled(true);
} else if (data.getConfigName().equals(Dust.DESTROY_DUST.getConfigName())) {
e.setCancelled(true);
event.setCancelled(true);
} else if(data.getConfigName().equals(Dust.MYSTERY_DUST.getConfigName())) {
e.setCancelled(true);
methods.setItemInHand(player, methods.removeItem(item));
event.setCancelled(true);

if (mainHand) {
player.getInventory().setItemInMainHand(methods.removeItem(item));
} else {
player.getInventory().setItemInOffHand(methods.removeItem(item));
}

ItemStack item2 = pickDust().getDust(methods.percentPick(data.getChance() + 1, 1), 1);

Expand All @@ -197,6 +208,7 @@ public void openDust(PlayerInteractEvent e) {
methods.fireWork(player.getLocation().add(0, 1, 0), colors);
}
}
return true;
}

private Dust pickDust() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -244,4 +244,10 @@ public void onPlayerLeave(PlayerQuitEvent event) {
roll.remove(player);
} catch (Exception ignored) {}
}

@EventHandler(ignoreCancelled = true)
public void onScrollClick(PlayerInteractEvent event) {
Player player = event.getPlayer();
if (isScrambler(player.getInventory().getItemInOffHand()) || isScrambler(player.getInventory().getItemInOffHand())) event.setCancelled(true);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -135,16 +135,25 @@ public void onScrollUse(InventoryClickEvent event) {
@EventHandler()
public void onScrollClick(PlayerInteractEvent event) {
Player player = event.getPlayer();
ItemStack scroll = methods.getItemInHand(player);

if (scroll.isEmpty()) return;
if (checkScroll(player.getInventory().getItemInMainHand(), player, event)) return;

checkScroll(player.getInventory().getItemInOffHand(), player, event);

}

private boolean checkScroll(ItemStack scroll, Player player, PlayerInteractEvent event) {
if (scroll.isEmpty()) return false;

if (scroll.isSimilar(Scrolls.BLACK_SCROLL.getScroll())) {
event.setCancelled(true);
player.sendMessage(Messages.RIGHT_CLICK_BLACK_SCROLL.getMessage());
return true;
} else if (scroll.isSimilar(Scrolls.WHITE_SCROLL.getScroll()) || scroll.isSimilar(Scrolls.TRANSMOG_SCROLL.getScroll())) {
event.setCancelled(true);
return true;
}
return false;
}

@Deprecated
Expand Down

0 comments on commit bde17b1

Please sign in to comment.