mirror of
https://github.com/songoda/EpicHoppers.git
synced 2024-11-06 02:29:42 +01:00
add config option to emit inventorypickupevent
This commit is contained in:
parent
9a9043780f
commit
acba79cc6a
@ -6,6 +6,7 @@ import com.songoda.core.compatibility.CompatibleParticleHandler;
|
|||||||
import com.songoda.core.locale.Locale;
|
import com.songoda.core.locale.Locale;
|
||||||
import com.songoda.epichoppers.EpicHoppers;
|
import com.songoda.epichoppers.EpicHoppers;
|
||||||
import com.songoda.epichoppers.hopper.Hopper;
|
import com.songoda.epichoppers.hopper.Hopper;
|
||||||
|
import com.songoda.epichoppers.settings.Settings;
|
||||||
import com.songoda.epichoppers.utils.Methods;
|
import com.songoda.epichoppers.utils.Methods;
|
||||||
import com.songoda.epichoppers.utils.StorageContainerCache;
|
import com.songoda.epichoppers.utils.StorageContainerCache;
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
@ -15,7 +16,11 @@ import org.bukkit.entity.EntityType;
|
|||||||
import org.bukkit.entity.Item;
|
import org.bukkit.entity.Item;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.inventory.ClickType;
|
import org.bukkit.event.inventory.ClickType;
|
||||||
|
import org.bukkit.event.inventory.InventoryPickupItemEvent;
|
||||||
|
import org.bukkit.event.inventory.InventoryType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
|
import org.bukkit.inventory.InventoryHolder;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
@ -73,8 +78,18 @@ public class ModuleSuction extends Module {
|
|||||||
.map(entity -> (Item) entity)
|
.map(entity -> (Item) entity)
|
||||||
.collect(Collectors.toSet());
|
.collect(Collectors.toSet());
|
||||||
|
|
||||||
|
if (itemsToSuck.isEmpty())
|
||||||
|
return;
|
||||||
|
|
||||||
boolean filterEndpoint = hopper.getFilter().getEndPoint() != null;
|
boolean filterEndpoint = hopper.getFilter().getEndPoint() != null;
|
||||||
|
|
||||||
|
InventoryHolder inventoryHolder = null;
|
||||||
|
Inventory hopperInventory = null;
|
||||||
|
if (Settings.EMIT_INVENTORYPICKUPITEMEVENT.getBoolean()) {
|
||||||
|
inventoryHolder = (InventoryHolder) hopper.getBlock().getState();
|
||||||
|
hopperInventory = Bukkit.createInventory(inventoryHolder, InventoryType.HOPPER);
|
||||||
|
}
|
||||||
|
|
||||||
for (Item item : itemsToSuck) {
|
for (Item item : itemsToSuck) {
|
||||||
|
|
||||||
ItemStack itemStack = item.getItemStack();
|
ItemStack itemStack = item.getItemStack();
|
||||||
@ -115,6 +130,14 @@ public class ModuleSuction extends Module {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Settings.EMIT_INVENTORYPICKUPITEMEVENT.getBoolean()) {
|
||||||
|
hopperInventory.setContents(hopperCache.cachedInventory);
|
||||||
|
InventoryPickupItemEvent pickupevent = new InventoryPickupItemEvent(hopperInventory, item);
|
||||||
|
Bukkit.getPluginManager().callEvent(pickupevent);
|
||||||
|
if (pickupevent.isCancelled())
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
// try to add the items to the hopper
|
// try to add the items to the hopper
|
||||||
int toAdd, added = hopperCache.addAny(itemStack, toAdd = getActualItemAmount(item));
|
int toAdd, added = hopperCache.addAny(itemStack, toAdd = getActualItemAmount(item));
|
||||||
if (added == 0)
|
if (added == 0)
|
||||||
|
@ -85,6 +85,11 @@ public class Settings {
|
|||||||
"Which economy plugin should be used?",
|
"Which economy plugin should be used?",
|
||||||
"Supported plugins you have installed: \"" + EconomyManager.getManager().getRegisteredPlugins().stream().collect(Collectors.joining("\", \"")) + "\".");
|
"Supported plugins you have installed: \"" + EconomyManager.getManager().getRegisteredPlugins().stream().collect(Collectors.joining("\", \"")) + "\".");
|
||||||
|
|
||||||
|
public static final ConfigSetting EMIT_INVENTORYPICKUPITEMEVENT = new ConfigSetting(config, "Main.Emit InventoryPickupItemEvent", false,
|
||||||
|
"This event is used by other plugin to modify or monitor the behavior when a hopper picks up items on the ground.",
|
||||||
|
"However it is a high frequency event and may have an impact on your server performance which is why it is disabled by default.",
|
||||||
|
"If you absolutely need this enable it but be aware of the potential performance impact.");
|
||||||
|
|
||||||
public static final ConfigSetting ECO_ICON = new ConfigSetting(config, "Interfaces.Economy Icon", "SUNFLOWER");
|
public static final ConfigSetting ECO_ICON = new ConfigSetting(config, "Interfaces.Economy Icon", "SUNFLOWER");
|
||||||
public static final ConfigSetting XP_ICON = new ConfigSetting(config, "Interfaces.XP Icon", "EXPERIENCE_BOTTLE");
|
public static final ConfigSetting XP_ICON = new ConfigSetting(config, "Interfaces.XP Icon", "EXPERIENCE_BOTTLE");
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user