A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
1
package de.typable.minecrafthub.event;3
import java.util.HashMap;4
import java.util.Map;5
import java.util.Map.Entry;7
import org.bukkit.Location;8
import org.bukkit.Material;9
import org.bukkit.block.Block;
16
import org.bukkit.event.EventHandler;17
import org.bukkit.event.Listener;18
import org.bukkit.event.block.Action;19
import org.bukkit.event.block.BlockBreakEvent;20
import org.bukkit.event.player.PlayerInteractEvent;21
import org.bukkit.util.Vector;22
import org.spigotmc.event.entity.EntityDismountEvent;
26
{27
private static final Material[] CHAIR_TYPE = new Material[] { Material.OAK_STAIRS, Material.SPRUCE_STAIRS, Material.BIRCH_STAIRS, Material.JUNGLE_STAIRS, Material.ACACIA_STAIRS, Material.DARK_OAK_STAIRS, Material.ACACIA_STAIRS, Material.CRIMSON_STAIRS, Material.WARPED_STAIRS };29
private Map<Block, Arrow> blockMap = new HashMap<>();31
@SuppressWarnings("deprecation")32
@EventHandler33
public void onPlayerInteract(PlayerInteractEvent event)
41
if(isChair(block.getType()))42
{43
if(blockMap.containsKey(block))44
{45
return;46
}48
Block upperBlock = block.getWorld().getBlockAt(block.getLocation().add(0, 1, 0));50
if(upperBlock != null && upperBlock.getType() == Material.AIR)
62
arrow.setPassenger((Entity) event.getPlayer());64
event.setCancelled(true);66
blockMap.put(block, arrow);67
}68
}69
}
81
if(entity != null && entity instanceof Arrow)82
{83
if(blockMap.containsValue(entity))84
{85
for(Entry<Block, Arrow> entry : blockMap.entrySet())86
{87
if(entry.getValue() == entity)88
{89
blockMap.remove(entry.getKey());91
break;92
}93
}94
}96
entity.remove();97
}98
}99
}101
@EventHandler102
public void onBlockBreak(BlockBreakEvent event)103
{104
Block block = event.getBlock();106
if(blockMap.containsKey(block))107
{108
Arrow arrow = blockMap.get(block);109
arrow.eject();111
blockMap.remove(block);112
}113
}115
private boolean isChair(Material material)116
{117
for(Material chair : CHAIR_TYPE)