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