下面列出了org.bukkit.Material#SIGN_POST 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
private void placeSignInWorld(AnniSign asign, String[] lore)
{
Location loc = asign.getLocation().toLocation();
Block block = loc.getWorld().getBlockAt(loc);//asign.getLocation().toLocation().getBlock();
if(block.getType() != Material.WALL_SIGN && block.getType() != Material.SIGN_POST)
block.getWorld().getBlockAt(loc).setType(asign.isSignPost() ? Material.SIGN_POST : Material.WALL_SIGN);
Sign sign = (Sign)block.getState();
if(sign != null)
{
for(int x = 0; x < lore.length; x++)
sign.setLine(x, lore[x]);
org.bukkit.material.Sign matSign = new org.bukkit.material.Sign(block.getType());
matSign.setFacingDirection(asign.getFacingDirection());
sign.setData(matSign);
sign.update(true);
}
}
/**
* Creates a door with a given time in seconds.
*
* @param player the player who is setting the arena up
* @param input the time, in seconds, the door will take to open
*/
private void addDoor(Player player, String input) {
Block block = player.getEyeLocation().getBlock();
Material material = block.getType();
if (material != Material.SIGN_POST && material != Material.WALL_SIGN) {
Messages.BLOCK_NOT_SIGN.send(player);
return;
}
int seconds = Utils.getNumber(player, input);
if (seconds < 0) {
Messages.BAD_SECONDS.send(player);
return;
}
int signID = editedFile.createListLocation(player, block.getLocation(), "Doors");
editedFile.getConfig().set("Doors." + signID + ".Timer", seconds);
editedFile.saveFile();
Messages.CREATED_SIGN.send(player, signID, seconds);
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void signClickCheck(PlayerInteractEvent event)
{
if(event.getAction() == Action.RIGHT_CLICK_BLOCK)
{
Block b = event.getClickedBlock();
if(b != null)
{
if(b.getType() == Material.WALL_SIGN || b.getType() == Material.SIGN_POST)
{
final Location loc = b.getLocation();
final Player p = event.getPlayer();
AnniSign sign = this.signs.get(MapKey.getKey(loc));
if(sign != null)
{
event.setCancelled(true);
if(sign.getType().equals(SignType.Team))
{
AnniTeam team = sign.getType().getTeam();
if(team != null)
{
p.performCommand("team "+team.getName());
}
}
else if(sign.getType().equals(SignType.Brewing))
{
ShopMenu.openBrewingShop(p);
}
else if(sign.getType().equals(SignType.Weapon))
{
ShopMenu.openWeaponShop(p);
}
}
}
}
}
}
@EventHandler(priority = EventPriority.LOW,ignoreCancelled = true)
public void signBreakCheck(BlockBreakEvent event)
{
if(event.getBlock() != null && event.getPlayer().getGameMode() != GameMode.CREATIVE)
{
if(event.getBlock().getType() == Material.WALL_SIGN || event.getBlock().getType() == Material.SIGN_POST)
{
MapKey key = MapKey.getKey(event.getBlock().getLocation());
if(this.signs.containsKey(key))
event.setCancelled(true);
}
}
}
public static boolean isSign(Material material) {
return material == Material.SIGN_POST || material == Material.WALL_SIGN;
}
public static boolean isSign(Material material) {
return material == Material.WALL_SIGN || material == Material.SIGN_POST || material == Material.SIGN;
}