1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-19 19:25:48 +00:00

Prevent Hopper Minecarts from picking up display items

This commit is contained in:
BuildTools 2016-11-13 17:36:46 +01:00
parent c99a1fd9a7
commit bdb8bc5d2f

View File

@ -28,6 +28,7 @@ import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryPickupItemEvent;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.event.player.PlayerPickupItemEvent;
import org.bukkit.inventory.ItemStack;
@ -36,14 +37,14 @@ import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.util.Vector;
public class AncientAltarListener implements Listener {
public AncientAltarListener(SlimefunStartup plugin) {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
List<Block> altars = new ArrayList<Block>();
Set<UUID> removed_items = new HashSet<UUID>();
@EventHandler(priority=EventPriority.HIGH)
public void onInteract(PlayerInteractEvent e) {
if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
@ -59,9 +60,9 @@ public class AncientAltarListener implements Listener {
else if (!removed_items.contains(stack.getUniqueId())) {
final UUID uuid = stack.getUniqueId();
removed_items.add(uuid);
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
removed_items.remove(uuid);
@ -76,10 +77,10 @@ public class AncientAltarListener implements Listener {
}
else if (item.getName().equals("ANCIENT_ALTAR")) {
e.setCancelled(true);
ItemStack catalyst = e.getPlayer().getInventory().getItemInMainHand();
List<Block> pedestals = Pedestals.getPedestals(b);
if (!altars.contains(e.getClickedBlock())) {
altars.add(e.getClickedBlock());
if (pedestals.size() == 8) {
@ -89,7 +90,7 @@ public class AncientAltarListener implements Listener {
Item stack = findItem(pedestal);
if (stack != null) input.add(fixItemStack(stack.getItemStack(), stack.getCustomName()));
}
ItemStack result = Pedestals.getRecipeOutput(catalyst, input);
if (result != null) {
List<ItemStack> consumed = new ArrayList<ItemStack>();
@ -115,7 +116,7 @@ public class AncientAltarListener implements Listener {
}
}
}
private ItemStack fixItemStack(ItemStack itemStack, String customName) {
ItemStack stack = itemStack.clone();
if (customName.equals(StringUtils.formatItemName(itemStack.getData().toItemStack(1), false))) {
@ -162,4 +163,13 @@ public class AncientAltarListener implements Listener {
e.getItem().remove();
}
}
@EventHandler
public void onMinecraftPickup(InventoryPickupItemEvent e) {
if (e.getItem().hasMetadata("no_pickup")) e.setCancelled(true);
else if (!e.getItem().hasMetadata("no_pickup") && e.getItem().getItemStack().hasItemMeta() && e.getItem().getItemStack().getItemMeta().hasDisplayName() && e.getItem().getItemStack().getItemMeta().getDisplayName().startsWith("§5§dALTAR §3Probe - §e")) {
e.setCancelled(true);
e.getItem().remove();
}
}
}