Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
113
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.94 KB | None | 0 0
  1. package SignSystem;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.DataOutputStream;
  5. import java.util.ArrayList;
  6. import java.util.HashSet;
  7. import org.bukkit.Bukkit;
  8. import org.bukkit.ChatColor;
  9. import org.bukkit.Location;
  10. import org.bukkit.Material;
  11. import org.bukkit.World;
  12. import org.bukkit.block.Block;
  13. import org.bukkit.block.Sign;
  14. import org.bukkit.command.Command;
  15. import org.bukkit.command.CommandSender;
  16. import org.bukkit.configuration.ConfigurationSection;
  17. import org.bukkit.entity.Player;
  18. import org.bukkit.event.EventHandler;
  19. import org.bukkit.event.Listener;
  20. import org.bukkit.event.block.Action;
  21. import org.bukkit.event.player.PlayerInteractEvent;
  22. import org.bukkit.plugin.java.JavaPlugin;
  23. import org.bukkit.scheduler.BukkitRunnable;
  24.  
  25. public class Main extends JavaPlugin implements Listener {
  26.  
  27. private ArrayList<StatusSign> signs;
  28. @SuppressWarnings("deprecation")
  29. @Override
  30. public void onEnable() {
  31. this.signs = new ArrayList<StatusSign>();
  32. saveDefaultConfig();
  33. for (String str : getConfig().getKeys(false)){
  34. ConfigurationSection s = getConfig().getConfigurationSection(str);
  35. ConfigurationSection l = s.getConfigurationSection("loc");
  36. World w = Bukkit.getServer().getWorld(l.getString("world"));
  37. double x = l.getDouble("x");double y = l.getDouble("y");double z = l.getDouble("z");
  38. Location loc = new Location(w, x, y, z);
  39. if (loc.getBlock() == null) {
  40. getConfig().set(str, null);
  41. } else {
  42. this.signs.add(new StatusSign(loc, s.getString("name"), s.getString("ip"), s.getInt("port")));
  43. }
  44. }
  45. Bukkit.getScheduler().scheduleAsyncRepeatingTask(this, new BukkitRunnable() {
  46.  
  47. @Override
  48. public void run() {
  49. for(StatusSign s : Main.this.signs){
  50. s.UpdateSigns();
  51. }
  52. }
  53. }, 0, 1l);
  54. Bukkit.getServer().getPluginManager().registerEvents(this, this);
  55. Bukkit.getServer().getMessenger().registerOutgoingPluginChannel(this, "BungeeCord");
  56. }
  57.  
  58. @EventHandler
  59. public void onPLayerInteract(PlayerInteractEvent event){
  60. if(event.getAction() != Action.RIGHT_CLICK_BLOCK){
  61. return;
  62. }
  63. Block block = event.getClickedBlock();
  64. if((block.getType() != Material.SIGN) && (block.getType() != Material.SIGN_POST) && (block.getType() != Material.WALL_SIGN)) {
  65. return;
  66. }
  67. Sign sign = (Sign) event.getClickedBlock().getState();
  68.  
  69. if(sign.getLine(3) == null){
  70. event.setCancelled(true);
  71. return;
  72. }
  73. for (StatusSign s : signs) {
  74.  
  75. if(s.getLocation().equals(block.getLocation())) {
  76.  
  77. try {
  78.  
  79. ByteArrayOutputStream b = new ByteArrayOutputStream();
  80. DataOutputStream out = new DataOutputStream(b);
  81. out.writeUTF("Connect");
  82. out.writeUTF(s.getName());
  83. event.getPlayer().sendPluginMessage(this, "BungeeCord", b.toByteArray());
  84. } catch (Exception e) { }
  85. }
  86. }
  87. }
  88. @Override
  89. public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
  90. if(!(sender instanceof Player)){
  91. Bukkit.getConsoleSender().sendMessage("§7Dieser Command ist nur fuer ein Spieler");
  92. return true;
  93. }
  94. Player player = (Player)sender;
  95. if(!sender.hasPermission("ss.create")){
  96. sender.sendMessage("§cDu hast keine Permission für diesen Command.");
  97. return true;
  98. }
  99.  
  100. if(cmd.getName().equalsIgnoreCase("createsign")){
  101. if(args.length < 3){
  102. player.sendMessage("§7/createsign §3<IP> §a<Port> §6<BungeeCord-Servername>");
  103. return true;
  104. }
  105. int port;
  106. String ip = args[0];
  107. port = Integer.valueOf(args[1]).intValue();
  108. String name = args[2];
  109. @SuppressWarnings("deprecation")
  110. Block block = player.getTargetBlock((HashSet<Byte>) null, 10);
  111.  
  112. StatusSign statusSign = new StatusSign(block.getLocation(), name, ip, port);
  113. this.signs.add(statusSign);
  114. save(statusSign);
  115.  
  116. if (block == null){
  117. player.sendMessage("§7Du schaust nicht auf das Schild");
  118. return true;
  119. }
  120. if ((block.getType() != Material.SIGN) && (block.getType() != Material.SIGN_POST) && (block.getType() != Material.WALL_SIGN)){
  121. player.sendMessage(ChatColor.RED + "§cDu schaust nicht auf das Schild!");
  122. return true;
  123. }
  124. }
  125. return false;
  126. }
  127. private void save(StatusSign sign){
  128. int size = getConfig().getKeys(false).size() + 1;
  129.  
  130. getConfig().set(size + ".loc.world", sign.getLocation().getWorld().getName());
  131. getConfig().set(size + ".loc.x", Double.valueOf(sign.getLocation().getX()));
  132. getConfig().set(size + ".loc.y", Double.valueOf(sign.getLocation().getY()));
  133. getConfig().set(size + ".loc.z", Double.valueOf(sign.getLocation().getZ()));
  134.  
  135. getConfig().set(size + ".name", sign.getName());
  136. getConfig().set(size + ".ip", sign.getIp());
  137. getConfig().set(size + ".port", Integer.valueOf(sign.getPort()));
  138.  
  139. saveConfig();
  140. }
  141.  
  142.  
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement