mirror of
https://gitlab.com/phoenix-dvpmt/mmoitems.git
synced 2025-02-27 15:31:22 +01:00
Configuration option & item listener
This commit is contained in:
parent
5f1e32d581
commit
4f61291d7c
@ -28,6 +28,7 @@ public class MMOItemsBukkit {
|
||||
|
||||
if (plugin.getConfig().getBoolean("dropped-items.tier-glow") || plugin.getConfig().getBoolean("dropped-items.hints"))
|
||||
Bukkit.getPluginManager().registerEvents(new DroppedItems(plugin.getConfig().getConfigurationSection("dropped-items")), plugin);
|
||||
Bukkit.getPluginManager().registerEvents(new DisabledItemsListener(plugin), plugin);
|
||||
|
||||
Bukkit.getScheduler().runTaskTimer(plugin, () -> Bukkit.getOnlinePlayers().forEach(player -> PlayerData.get(player).updateStats()), 100, 20);
|
||||
}
|
||||
|
@ -0,0 +1,114 @@
|
||||
package net.Indyuce.mmoitems.listener;
|
||||
|
||||
import io.lumine.mythic.lib.MythicLib;
|
||||
import io.lumine.mythic.lib.api.event.PlayerAttackEvent;
|
||||
import io.lumine.mythic.lib.api.item.NBTItem;
|
||||
import io.lumine.mythic.lib.damage.MeleeAttackMetadata;
|
||||
import net.Indyuce.mmoitems.MMOItems;
|
||||
import net.Indyuce.mmoitems.api.Type;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.block.BlockBreakEvent;
|
||||
import org.bukkit.event.entity.EntityShootBowEvent;
|
||||
import org.bukkit.event.inventory.InventoryAction;
|
||||
import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEntityEvent;
|
||||
import org.bukkit.event.player.PlayerInteractEvent;
|
||||
import org.bukkit.event.player.PlayerItemConsumeEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
/**
|
||||
* mmoitems
|
||||
* 13/03/2023
|
||||
*
|
||||
* @author Roch Blondiaux (Kiwix).
|
||||
*/
|
||||
public class DisabledItemsListener implements Listener {
|
||||
|
||||
private final MMOItems plugin;
|
||||
|
||||
public DisabledItemsListener(MMOItems plugin) {
|
||||
this.plugin = plugin;
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||
public void rightClickEffects(PlayerInteractEvent event) {
|
||||
if (!event.hasItem())
|
||||
return;
|
||||
NBTItem item = MythicLib.plugin.getVersion().getWrapper().getNBTItem(event.getItem());
|
||||
if (this.shouldCancel(item))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||
public void meleeAttacks(PlayerAttackEvent event) {
|
||||
if (!(event.getAttack() instanceof MeleeAttackMetadata))
|
||||
return;
|
||||
ItemStack weaponUsed = event.getPlayer().getInventory().getItem(((MeleeAttackMetadata) event.getAttack()).getHand().toBukkit());
|
||||
NBTItem item = MythicLib.plugin.getVersion().getWrapper().getNBTItem(weaponUsed);
|
||||
if (this.shouldCancel(item))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||
public void specialToolAbilities(BlockBreakEvent event) {
|
||||
final Player player = event.getPlayer();
|
||||
if (player.getGameMode() == GameMode.CREATIVE)
|
||||
return;
|
||||
|
||||
final NBTItem item = MythicLib.plugin.getVersion().getWrapper().getNBTItem(player.getInventory().getItemInMainHand());
|
||||
if (this.shouldCancel(item))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||
public void rightClickWeaponInteractions(PlayerInteractEntityEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (!(event.getRightClicked() instanceof LivingEntity))
|
||||
return;
|
||||
|
||||
NBTItem item = MythicLib.plugin.getVersion().getWrapper().getNBTItem(player.getInventory().getItemInMainHand());
|
||||
if (this.shouldCancel(item))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||
public void gemStonesAndItemStacks(InventoryClickEvent event) {
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
if (event.getAction() != InventoryAction.SWAP_WITH_CURSOR)
|
||||
return;
|
||||
|
||||
NBTItem item = MythicLib.plugin.getVersion().getWrapper().getNBTItem(event.getCursor());
|
||||
if (this.shouldCancel(item))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||
public void handleCustomBows(EntityShootBowEvent event) {
|
||||
if (!(event.getProjectile() instanceof Arrow) || !(event.getEntity() instanceof Player))
|
||||
return;
|
||||
|
||||
final NBTItem item = NBTItem.get(event.getBow());
|
||||
if (shouldCancel(item))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST, ignoreCancelled = true)
|
||||
public void handleVanillaEatenConsumables(PlayerItemConsumeEvent event) {
|
||||
NBTItem item = MythicLib.plugin.getVersion().getWrapper().getNBTItem(event.getItem());
|
||||
if (shouldCancel(item))
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
private boolean shouldCancel(NBTItem item) {
|
||||
if (!item.hasType() || !plugin.getConfig().getBoolean("disable-removed-items", true))
|
||||
return false;
|
||||
return !Type.isValid(item.getType());
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,3 @@
|
||||
|
||||
# DO NOT TOUCH
|
||||
config-version: 8
|
||||
|
||||
@ -379,5 +378,9 @@ lootsplosion:
|
||||
# gems' stats will increase as well.
|
||||
gem-upgrade-default: 'NEVER'
|
||||
|
||||
# This option allows you to disable the ability to
|
||||
# use MMOItems that have been removed from your config.
|
||||
disable-removed-items: true
|
||||
|
||||
# When I was a kid, I saw the Mona Lisa in my school art book...
|
||||
# The fist time I saw her, with her hands on her knee... how do I say this...
|
Loading…
Reference in New Issue
Block a user