A feature-rich Minecraft plugin which enhances gaming experience
git clone git://soophie.de/poppy
blob: 185c351df688aed24e40cd5cf55bf5f9422312fb (2494 bytes)[doc][blame][raw]
1
package de.typable.minecrafthub.event;3
import org.bukkit.Location;4
import org.bukkit.Material;5
import org.bukkit.block.Block;6
import org.bukkit.block.data.type.Stairs;7
import org.bukkit.entity.AbstractArrow.PickupStatus;8
import org.bukkit.entity.Arrow;9
import org.bukkit.entity.Entity;10
import org.bukkit.entity.Player;11
import org.bukkit.event.EventHandler;12
import org.bukkit.event.Listener;13
import org.bukkit.event.block.Action;14
import org.bukkit.event.player.PlayerInteractEvent;15
import org.bukkit.util.Vector;16
import org.spigotmc.event.entity.EntityDismountEvent;19
public class ChairListener implements Listener20
{21
private static final Material[] CHAIR_TYPE = new Material[] {22
Material.OAK_STAIRS,23
Material.SPRUCE_STAIRS,24
Material.BIRCH_STAIRS,25
Material.JUNGLE_STAIRS,26
Material.ACACIA_STAIRS,27
Material.DARK_OAK_STAIRS,28
Material.ACACIA_STAIRS,29
Material.CRIMSON_STAIRS,30
Material.WARPED_STAIRS31
};33
@SuppressWarnings("deprecation")34
@EventHandler35
public void onPlayerInteract(PlayerInteractEvent event)36
{37
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)38
{39
if(event.getClickedBlock() != null)40
{41
Block block = event.getClickedBlock();43
if(isChair(block.getType()))44
{45
Block upperBlock = block.getWorld().getBlockAt(block.getLocation().add(0, 1, 0));47
if(upperBlock != null && upperBlock.getType() == Material.AIR)48
{49
Stairs stairs = (Stairs) block.getState().getBlockData();51
if(isCompatible(stairs))52
{53
Location location = block.getLocation().add(0.5, 0, 0.5);54
Arrow arrow = (Arrow) block.getWorld().spawnArrow(location, new Vector(), 0F, 0F);55
arrow.setGravity(false);56
arrow.setInvulnerable(true);57
arrow.setPickupStatus(PickupStatus.DISALLOWED);58
arrow.setPassenger((Entity) event.getPlayer());59
}60
}61
}62
}63
}64
}66
@EventHandler67
public void onEntityDismount(EntityDismountEvent event)68
{69
if(event.getEntity() instanceof Player)70
{71
Entity entity = event.getDismounted();73
if(entity != null && entity instanceof Arrow)74
{75
entity.remove();76
}77
}78
}80
private boolean isChair(Material material)81
{82
for(Material chair : CHAIR_TYPE)83
{84
if(material == chair)85
{86
return true;87
}88
}90
return false;91
}93
private boolean isCompatible(Stairs stairs)94
{95
if(stairs.isWaterlogged())96
{97
return false;98
}100
if(stairs.getShape() != Stairs.Shape.STRAIGHT)101
{102
return false;103
}105
return true;106
}107
}