下面列出了org.bukkit.Material#WALL_SIGN 实例代码,或者点击链接到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
public void signRemoved(BlockBreakEvent event) {
if (Util.get().isSpawnWorld(event.getBlock().getWorld())) {
Location blockLocation = event.getBlock().getLocation();
World w = blockLocation.getWorld();
Block b = w.getBlockAt(blockLocation);
if(b.getType() == Material.WALL_SIGN || b.getType() == SkyWarsReloaded.getNMS().getMaterial("SIGN_POST").getType()){
Sign sign = (Sign) b.getState();
Location loc = sign.getLocation();
boolean removed = false;
for (GameMap gMap : GameMap.getMaps()) {
if (!removed) {
removed = gMap.removeSign(loc);
}
}
if (!removed) {
removed = SkyWarsReloaded.getLB().removeLeaderSign(loc);
}
if (removed) {
event.getPlayer().sendMessage(new Messaging.MessageFormatter().format("signs.remove"));
}
}
}
}
@EventHandler
public void signPlaced(SignChangeEvent event) {
String[] lines = event.getLines();
if (lines[0].equalsIgnoreCase("[sw]") && lines.length >= 2) {
if (event.getPlayer().hasPermission("sw.signs")) {
Location signLocation = event.getBlock().getLocation();
World w = signLocation.getWorld();
Block b = w.getBlockAt(signLocation);
if(b.getType() == Material.WALL_SIGN || b.getType() == SkyWarsReloaded.getNMS().getMaterial("SIGN_POST").getType()) {
event.setCancelled(true);
String serverName = lines[1];
SWRServer server = SWRServer.getServer(serverName);
if (server != null) {
server.addSign(signLocation);
event.getPlayer().sendMessage(new Messaging.MessageFormatter().format("signs.added"));
} else {
event.getPlayer().sendMessage(new Messaging.MessageFormatter().format("signs.no-map"));
}
}
} else {
event.getPlayer().sendMessage(new Messaging.MessageFormatter().format("error.signs-no-perm"));
event.setCancelled(true);
}
}
}
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = false)
public void onPlayerInteract(PlayerInteractEvent e) {
Player player = e.getPlayer();
if (e.getAction() == Action.RIGHT_CLICK_BLOCK) {
if (e.getClickedBlock().getType() == Material.WALL_SIGN || e.getClickedBlock().getType() == SkyWarsReloaded.getNMS().getMaterial("SIGN_POST").getType()) {
Sign s = (Sign) e.getClickedBlock().getState();
Location loc = s.getLocation();
SWRServer server = SWRServer.getSign(loc);
if (server != null) {
if (server.getMatchState().equals(MatchState.WAITINGSTART) && server.getPlayerCount() < server.getMaxPlayers()) {
server.setPlayerCount(server.getPlayerCount() + 1);
server.updateSigns();
SkyWarsReloaded.get().sendBungeeMsg(player, "Connect", server.getServerName());
}
}
}
}
}
@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);
}
}
}
@EventHandler
public void signRemoved(BlockBreakEvent event) {
Location blockLocation = event.getBlock().getLocation();
World w = blockLocation.getWorld();
Block b = w.getBlockAt(blockLocation);
if(b.getType() == Material.WALL_SIGN || b.getType() == SkyWarsReloaded.getNMS().getMaterial("SIGN_POST").getType()){
Sign sign = (Sign) b.getState();
Location loc = sign.getLocation();
SWRServer server = SWRServer.getSign(loc);
if (server != null) {
server.removeSign(loc);
event.getPlayer().sendMessage(new Messaging.MessageFormatter().format("signs.remove"));
}
}
}
@EventHandler
public void onPlayerInteract(PlayerInteractEvent event) {
Player player = event.getPlayer();
String name = player.getName();
if (event.getAction() != Action.PHYSICAL) {
if (TutorialManager.getManager().isInTutorial(name) && TutorialManager.getManager().getCurrentTutorial
(name).getViewType() != ViewType.TIME) {
if (TutorialManager.getManager().getCurrentTutorial(name).getTotalViews() == TutorialManager
.getManager().getCurrentView(name)) {
plugin.getEndTutorial().endTutorial(player);
} else {
plugin.incrementCurrentView(name);
TutorialUtils.getTutorialUtils().messageUtils(player);
Caching.getCaching().setTeleport(player, true);
player.teleport(TutorialManager.getManager().getTutorialView(name).getLocation());
}
}
}
if ((event.getAction() == Action.RIGHT_CLICK_BLOCK || event.getAction() == Action.LEFT_CLICK_BLOCK) &&
!TutorialManager.getManager().isInTutorial(name)) {
Block block = event.getClickedBlock();
if (block.getType() == Material.SIGN || block.getType() == Material.WALL_SIGN) {
Sign sign = (Sign) block.getState();
String match = ChatColor.stripColor(TutorialUtils.color(TutorialManager.getManager().getConfigs()
.signSetting()));
if (sign.getLine(0).equalsIgnoreCase(match) && sign.getLine(1) != null) {
plugin.startTutorial(sign.getLine(1), player);
}
}
}
}
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;
}