Sign Manupilation (spell)

Discussion in 'Plugin Development' started by glassbillen, Feb 21, 2014.

Thread Status:
Not open for further replies.
  1. Offline

    glassbillen

    Hi, im making Join signs :D and leave. Well actually they does exacly as the command (the same) but i would like a "sign way" to join. :( well just now its just doing the text. here is my code:
    Code:java
    1. package me.Glassbillen.TeleportBow;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.logging.Logger;
    5.  
    6. import org.bukkit.Bukkit;
    7. import org.bukkit.ChatColor;
    8. import org.bukkit.Location;
    9. import org.bukkit.Material;
    10. import org.bukkit.World;
    11. import org.bukkit.command.Command;
    12. import org.bukkit.command.CommandSender;
    13. import org.bukkit.entity.Arrow;
    14. import org.bukkit.entity.Player;
    15. import org.bukkit.entity.Projectile;
    16. import org.bukkit.event.EventHandler;
    17. import org.bukkit.event.Listener;
    18. import org.bukkit.event.block.SignChangeEvent;
    19. import org.bukkit.event.entity.ProjectileHitEvent;
    20. import org.bukkit.inventory.Inventory;
    21. import org.bukkit.inventory.ItemStack;
    22. import org.bukkit.inventory.meta.ItemMeta;
    23. import org.bukkit.plugin.java.JavaPlugin;
    24.  
    25. public class TeleportBow extends JavaPlugin implements Listener {
    26. public final Logger logger = Logger.getLogger("Minecraft");
    27. public static TeleportBow plugin;
    28.  
    29. ArrayList<String> notwice = new ArrayList<String>();
    30.  
    31. SettingsManager settings = SettingsManager.getInstance();
    32.  
    33. @Override
    34. public void onDisable() {
    35. getLogger().info("TeleportBow has been disabled!");
    36. }
    37.  
    38. @Override
    39. public void onEnable() {
    40. getLogger().info("TeleportBow has been enabled!");
    41. Bukkit.getPluginManager().registerEvents(this, this);
    42. settings.setup(this);
    43. }
    44.  
    45. @EventHandler
    46. public void onProjectileHitEvent(ProjectileHitEvent event) {
    47.  
    48. if (!(event.getEntity().getShooter() instanceof Player)) return;
    49.  
    50. if (event.getEntity() instanceof Arrow) {
    51.  
    52. Player player = (Player) event.getEntity().getShooter();
    53. Projectile proj = event.getEntity();
    54.  
    55. if (player.getItemInHand().getItemMeta().getDisplayName().equalsIgnoreCase("TPBow")) {
    56.  
    57. if(player.getItemInHand() == null) return;
    58. if(!player.getItemInHand().hasItemMeta()) return;
    59.  
    60. player.teleport(proj.getLocation());
    61. }
    62. }
    63. }
    64.  
    65. @EventHandler
    66. public void onSignCreate(SignChangeEvent sign){
    67. Player player = sign.getPlayer();
    68. if(sign.getLine(0).equalsIgnoreCase("[TBLeave]")){
    69. sign.setLine(0, ChatColor.GOLD + "[TBLeave]");
    70. sign.setLine(1,ChatColor.GREEN + "Leave");
    71. }
    72. if(sign.getLine(0).equalsIgnoreCase("[TBJoin]")){
    73. sign.setLine(0, ChatColor.GOLD + "[TBJoin]");
    74. String join = sign.getLine(2);
    75. String by = sign.getLine(3);
    76. sign.setLine(1,ChatColor.GREEN + "Join");
    77. sign.setLine(2,ChatColor.LIGHT_PURPLE + join);
    78. sign.setLine(3, ChatColor.RED + "By: " + by);
    79. }
    80. }
    81.  
    82.  
    83. public boolean onCommand(CommandSender sender, Command cmd, String commandLabel, String[] args){
    84. Player player = (Player) sender;
    85. Inventory pi = player.getInventory();
    86.  
    87. if (cmd.getName().equalsIgnoreCase("TBSetLobby")) {
    88. if(player.hasPermission("TeleportBow.Spawn")){
    89. settings.getData().set("TBlobby.world", player.getLocation().getWorld().getName());
    90. settings.getData().set("TBlobby.x", player.getLocation().getX());
    91. settings.getData().set("TBlobby.y", player.getLocation().getY());
    92. settings.getData().set("TBlobby.z", player.getLocation().getZ());
    93. settings.saveData();
    94. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Lobby Spawn utsatt");
    95. return true;
    96. }
    97. }
    98.  
    99. if (cmd.getName().equalsIgnoreCase("TBSpawn")) {
    100. if(player.hasPermission("TeleportBow.TBSpawn")){
    101. if (settings.getData().getConfigurationSection("TBlobby") == null) {
    102. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Lobby spawn har inte blivit utsatt");
    103. return true;
    104. }
    105. World w = Bukkit.getServer().getWorld(settings.getData().getString("TBlobby.world"));
    106. double x = settings.getData().getDouble("TBlobby.x");
    107. double y = settings.getData().getDouble("TBlobby.y");
    108. double z = settings.getData().getDouble("TBlobby.z");
    109. player.teleport(new Location(w, x, y, z));
    110. }
    111. }
    112.  
    113.  
    114. if(cmd.getName().equalsIgnoreCase("TBSetSpawn")){
    115. if(player.hasPermission("TeleportBow.Admin")){
    116. if (args.length == 0) {
    117. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Ange ett namn!");
    118. return true;
    119. }
    120. settings.getData().set("arena." + args[0] + ".world", player.getLocation().getWorld().getName());
    121. settings.getData().set("arena." + args[0] + ".x", player.getLocation().getX());
    122. settings.getData().set("arena." + args[0] + ".y", player.getLocation().getY());
    123. settings.getData().set("arena." + args[0] + ".z", player.getLocation().getZ());
    124. settings.saveData();
    125. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Arenan " + args[0] + " e klar!");
    126. }
    127. }
    128.  
    129. if(cmd.getName().equalsIgnoreCase("TBJoin")){
    130. if(player.hasPermission("TeleportBow.Join")){
    131.  
    132. if (args.length == 0) {
    133. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Ange ett namn!");
    134. return true;
    135. }
    136. if (settings.getData().getConfigurationSection("arena." + args[0]) == null) {
    137. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Arenan " + args[0] + " finns inte!");
    138. return true;
    139. }
    140.  
    141. if (notwice.contains(sender.getName())){
    142. sender.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Du e redan med i TB");
    143. return true;
    144. }
    145.  
    146. World w = Bukkit.getServer().getWorld(settings.getData().getString("arena." + args[0] + ".world"));
    147. double x = settings.getData().getDouble("arena." + args[0] + ".x");
    148. double y = settings.getData().getDouble("arena." + args[0] + ".y");
    149. double z = settings.getData().getDouble("arena." + args[0] + ".z");
    150. player.teleport(new Location(w, x, y, z));
    151. notwice.add(sender.getName());
    152. ItemStack bow = new ItemStack(Material.BOW, 1);
    153. ItemMeta bowMeta = bow.getItemMeta();
    154. bowMeta.setDisplayName("TPBow");
    155. bow.setItemMeta(bowMeta);
    156. pi.addItem(bow);
    157. ItemStack arrow = new ItemStack(Material.ARROW, 64);
    158. ItemMeta arrowMeta = arrow.getItemMeta();
    159. arrow.setItemMeta(arrowMeta);
    160. pi.addItem(arrow);
    161. player.setHealth(20.0);
    162. player.setFoodLevel(20);
    163. player.setWalkSpeed(0);
    164.  
    165. }
    166. Bukkit.broadcastMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + sender.getName() + " Har joinat TeleportBow! Arena: " + args[0] + "!");
    167. }
    168. if(cmd.getName().equalsIgnoreCase("TBLeave")){
    169. if(player.hasPermission("TeleportBow.Leave")){
    170. if (notwice.contains(sender.getName())) {
    171. notwice.remove(sender.getName());
    172. } else {
    173. sender.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Du har redan leavat TeleportBow");
    174. return true;
    175. }
    176. player.getInventory().clear();
    177. player.setHealth(20.0);
    178. player.setFoodLevel(20);
    179. player.setWalkSpeed((float) 0.2);
    180. Bukkit.broadcastMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + sender.getName() + " Har leavat TeleportBow!");
    181.  
    182. }
    183. }
    184. if(cmd.getName().equalsIgnoreCase("TBGet")){
    185. if(player.hasPermission("TeleportBow.TBGet")){
    186. ItemStack bow = new ItemStack(Material.BOW, 1);
    187. ItemMeta bowMeta = bow.getItemMeta();
    188. bowMeta.setDisplayName("TPBow");
    189. bow.setItemMeta(bowMeta);
    190. pi.addItem(bow);
    191.  
    192. ItemStack arrow = new ItemStack(Material.ARROW, 64);
    193. ItemMeta arrowMeta = arrow.getItemMeta();
    194. arrow.setItemMeta(arrowMeta);
    195. pi.addItem(arrow);
    196. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + "Njut av bowen :D");
    197. }
    198.  
    199. }
    200. if(cmd.getName().equalsIgnoreCase("TBRemoveArena")){
    201. if(player.hasPermission("TeleportBow.Admin")){
    202. if (args.length == 0) {
    203. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Ane ett namn!");
    204. return true;
    205. }
    206. if (settings.getData().getConfigurationSection("arena." + args[0]) == null) {
    207. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Arenan finns inte");
    208. return true;
    209. }
    210. settings.getData().set("arena." + args[0], null);
    211. settings.saveData();
    212. player.sendMessage(ChatColor.GOLD + "[" + ChatColor.AQUA + "Teleport" + ChatColor.DARK_PURPLE + "Bow" + ChatColor.GOLD + "] " + ChatColor.GREEN + "Arenan " + args[0] + " e nu bortagen");
    213. }
    214.  
    215. }
    216.  
    217. if(cmd.getName().equalsIgnoreCase("TB")){
    218. if(player.hasPermission("TeleportBow.TB")){
    219. player.sendMessage(ChatColor.LIGHT_PURPLE + "-----> Commands <-----");
    220. player.sendMessage(ChatColor.GOLD + "/TBSetSpawn <arena> - Skapar en arena");
    221. player.sendMessage(ChatColor.BLUE + "/TBJoin - Joinar TB");
    222. player.sendMessage(ChatColor.RED + "/TBLeave - Leavar TB. OBS rensar din invetory!");
    223. player.sendMessage(ChatColor.GREEN + "/TBGet - Ger dig TPBow och pilar");
    224. player.sendMessage(ChatColor.GRAY + "/TBRemoveArena <arena> - Raderar en arena");
    225. player.sendMessage(ChatColor.YELLOW + "/TB - Visar detta");
    226. player.sendMessage(ChatColor.AQUA + "/TeleportBow - Visar detta");
    227. player.sendMessage(ChatColor.DARK_PURPLE + "/TBSetLobby - Skapar lobbyn");
    228. player.sendMessage(ChatColor.DARK_BLUE + "/TBSpawn - Teleporterar dig till Lobbyn");
    229. player.sendMessage(ChatColor.DARK_RED + "TeleportBow e gjort Av: DustFighter/Glassbillen!");
    230.  
    231. }
    232.  
    233. }
    234. if(cmd.getName().equalsIgnoreCase("TeleportBow")){
    235. if(player.hasPermission("TeleportBow.TeleportBow")){
    236. player.sendMessage(ChatColor.LIGHT_PURPLE + "-----> Commands <-----");
    237. player.sendMessage(ChatColor.GOLD + "/TBSetSpawn <arena> - Skapar en arena");
    238. player.sendMessage(ChatColor.BLUE + "/TBJoin - Joinar TB");
    239. player.sendMessage(ChatColor.RED + "/TBLeave - Leavar TB. OBS rensar din invetory!");
    240. player.sendMessage(ChatColor.GREEN + "/TBGet - Ger dig TPBow och pilar");
    241. player.sendMessage(ChatColor.GRAY + "/TBRemoveArena <arena> - Raderar en arena");
    242. player.sendMessage(ChatColor.YELLOW + "/TB - Visar detta");
    243. player.sendMessage(ChatColor.AQUA + "/TeleportBow - Visar detta");
    244. player.sendMessage(ChatColor.DARK_PURPLE + "/TBSetLobby - Skapar lobbyn");
    245. player.sendMessage(ChatColor.DARK_BLUE + "/TBSpawn - Teleporterar dig till Lobbyn");
    246. player.sendMessage(ChatColor.DARK_RED + "TeleportBow e gjort Av: DustFighter/Glassbillen!");
    247.  
    248. }
    249. }
    250. return false;
    251.  
    252. }
    253. }


    BUMP. Pleas Help

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: Jun 6, 2016
  2. Offline

    zack6849

    Listen for a PlayerInteractEvent.
    something like this (note this is psuedocode and may have errors :p )
    Code:
    @EventHandler
    public void onInteract(PlayerInteractEvent event){
      if(event.getAction() == Action.RIGHT_CLICK_BLOCK && event.getClickedBlock().getState() instanceof Sign){
        Sign sign = (Sign) event.getClickedBlock().getState();
        //im not quite sure if thats the method to get the text of a certain line or not, i forget.
        String joinname = sign.getLine(2);
        //i may also not that getting the line *may* still include the chatcolors, you'll probably have to strip those.
          getServer().dispatchCommand(event.getPlayer(),  "tbjoin " + joinname);
      }
    }
    
     
Thread Status:
Not open for further replies.

Share This Page