2015-05-31 62 views
-1

我會如何複製在第一行中輸入的內容?它應該是打開或關閉我想將其移動到第3行。行從0開始並且轉到3.因此,如果有人在第二行打開,那麼它將在最後一行顯示爲打開將一個字符串從一個地方複製到另一個地方

package me.mcmatt.shops; 

import java.util.Arrays; 

import org.bukkit.ChatColor; 
import org.bukkit.Material; 
import org.bukkit.Sound; 
import org.bukkit.block.Block; 
import org.bukkit.block.Sign; 
import org.bukkit.entity.Player; 
import org.bukkit.event.EventHandler; 
import org.bukkit.event.Listener; 
import org.bukkit.event.block.Action; 
import org.bukkit.event.block.SignChangeEvent; 
import org.bukkit.event.player.PlayerInteractEvent; 

public class Signs implements Listener { 


    @ 
    EventHandler 
    public void onSignChange(SignChangeEvent e) { 
    if (e.getLine(0).equalsIgnoreCase("[shop]")) { 
     Block attached = e.getBlock().getRelative(0, -1, 0); 
     String name = e.getPlayer().getDisplayName(); 
     if (!(attached.getType() == Material.CHEST)) 
     e.getPlayer().sendMessage(ChatColor.RED + "Please place the shop on a chest!"); 
     else { 
     if (!e.getPlayer().hasPermission("shops.create")) 
      e.getPlayer().sendMessage(ChatColor.RED + "You don't have permission to create a shop! (shops.create)"); 
     else { 
      if (!Arrays.asList("open", "closed").contains(e.getLine(1).toLowerCase())) { 
      e.getPlayer().sendMessage(ChatColor.RED + "You must specify if the shop is open or closed on the second line!"); 
      } else { 
      Sign o = (Sign) e.getBlock().getState(); 
      e.setLine(0, "§9[Shop]"); 
      e.setLine(1, "§4" + name + "'s"); 
      e.setLine(2, "§4Shop"); 
      e.setLine(3, o.getLine(1)); 
      e.getPlayer().sendMessage(ChatColor.GREEN + "Shop Created!"); 
      e.getPlayer().playSound(e.getPlayer().getLocation(), Sound.LEVEL_UP, 10, 10); 
      } 
     } 
     } 
    } 
    } 

    @ 
    EventHandler 
    public void onPlayerInteract(PlayerInteractEvent e) { 
    if (e.getAction().equals(Action.RIGHT_CLICK_BLOCK)) { 
     Player p = e.getPlayer(); 
     Block b = e.getClickedBlock(); 
     Material m = b.getType(); 
     if (!(m == Material.SIGN_POST)) { 
     return; 
     } else { 
     Sign sign = (Sign) e.getClickedBlock().getState(); 
     if ((sign.getLine(0).equalsIgnoreCase("§9[Shop]"))) { 
      p.sendMessage("I right clicked the sign!"); 
     } 
     } 
    } 
    } 
} 

回答

1

只是檢查線路被設置,並設置3號線與相應的值:

//on SignChangeEvent 'event' 
event.setLine(3, event.getLine(1)); 

正如你在你的問題已經做了,所以檢查你的代碼的其餘部分的邏輯,以確保它將正確執行。

個人而言,我不會試圖直接設置某人的輸入作爲輸出,而我會採取什麼他們給了我,然後相應地使用它:

boolean closed = true; 
if ("open".equalsIgnoreCase(event.getLine(1)) { 
    closed = false; 
} 
String lineThree = closed ? "Closed" : "Open"; 
相關問題