Advertisement
Chiddix

ForcefieldPlugin

Jun 13th, 2015
301
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.88 KB | None | 0 0
  1. package me.rabrg.forcefield;
  2.  
  3. import java.lang.reflect.InvocationTargetException;
  4. import java.util.ArrayList;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;
  8.  
  9. import org.bukkit.Bukkit;
  10. import org.bukkit.ChatColor;
  11. import org.bukkit.Location;
  12. import org.bukkit.Material;
  13. import org.bukkit.command.Command;
  14. import org.bukkit.command.CommandSender;
  15. import org.bukkit.entity.Player;
  16. import org.bukkit.event.EventHandler;
  17. import org.bukkit.event.EventPriority;
  18. import org.bukkit.event.Listener;
  19. import org.bukkit.event.player.PlayerJoinEvent;
  20. import org.bukkit.metadata.FixedMetadataValue;
  21. import org.bukkit.plugin.java.JavaPlugin;
  22.  
  23. import com.comphenix.packetwrapper.WrapperPlayServerEntityTeleport;
  24. import com.comphenix.packetwrapper.WrapperPlayServerNamedEntitySpawn;
  25. import com.comphenix.protocol.Packets;
  26. import com.comphenix.protocol.ProtocolLibrary;
  27. import com.comphenix.protocol.ProtocolManager;
  28. import com.comphenix.protocol.events.ConnectionSide;
  29. import com.comphenix.protocol.events.PacketAdapter;
  30. import com.comphenix.protocol.events.PacketEvent;
  31. import com.comphenix.protocol.wrappers.WrappedDataWatcher;
  32.  
  33. @SuppressWarnings("deprecation")
  34. public class ForcefieldPlugin extends JavaPlugin implements Listener {
  35.  
  36.     private final List<Player> players;
  37.  
  38.     private final Map<Integer, Long> timers;
  39.  
  40.     private final List<Integer> indices;
  41.  
  42.     private int index;
  43.  
  44.     private int staticCount = 8;
  45.  
  46.     public ForcefieldPlugin() {
  47.         players = new ArrayList<Player>();
  48.         timers = new HashMap<Integer, Long>();
  49.         indices = new ArrayList<Integer>();
  50.         index = 123456789;
  51.     }
  52.  
  53.     @Override
  54.     public void onEnable() {
  55.         getServer().getPluginManager().registerEvents(this, this);
  56.         ProtocolLibrary.getProtocolManager().addPacketListener(new PacketAdapter(this, ConnectionSide.CLIENT_SIDE, Packets.Client.USE_ENTITY) {
  57.             @Override
  58.             public void onPacketReceiving(final PacketEvent event) {
  59.                 final int id = event.getPacket().getIntegers().getValues().get(0);
  60.                 if (indices.contains(id)) {
  61.                     if (id > 123456789 + staticCount) {
  62.                         if (timers.get(id) < System.currentTimeMillis()) {
  63.                             for (final Player player : players) {
  64.                                 move(player, new Location(player.getWorld(), 0, 0, 0), id);
  65.                             }
  66.                         } else {
  67.                             move(event.getPlayer(), event.getPlayer().getLocation(), id);
  68.                             timers.put(id, System.currentTimeMillis() + 1000);
  69.                         }
  70.                     }
  71.  
  72.                     if (!players.contains(event.getPlayer())) {
  73.                         players.add(event.getPlayer());
  74.                     }if (event.getPlayer().hasMetadata("forcefield")) {
  75.                         event.getPlayer().setMetadata("forcefield", new FixedMetadataValue(this, event.getPlayer().getMetadata("forcefield").get(0).asInt() + 1));
  76.                        
  77.                         if (event.getPlayer().getMetadata("forcefield").get(0).asInt() > 100) {
  78.                             Bukkit.dispatchCommand(Bukkit.getConsoleSender(), "tempban " + event.getPlayer().getName() + " 1d automated hack  reason: forcefield length: 1d info: " + event.getPlayer().getMetadata("forcefield").get(0).asInt());
  79.                             getServer().broadcastMessage(ChatColor.DARK_RED + "[" + ChatColor.AQUA + "SevereAnti" + ChatColor.RED + "Hack" + ChatColor.DARK_RED + "] " + ChatColor.RED + event.getPlayer().getName() + ChatColor.YELLOW + " has been SNIPED by Rabrg. reason: forcefield length: 1d info: " + event.getPlayer().getMetadata("forcefield").get(0).asInt());
  80.                             getServer().broadcastMessage(ChatColor.DARK_RED + "[" + ChatColor.AQUA + "SevereAnti" + ChatColor.RED + "Hack" + ChatColor.DARK_RED + "] " + ChatColor.YELLOW + "Has sniped: "  + ChatColor.RED +  "a lot of" + ChatColor.YELLOW + " players.");
  81.                         }
  82.                     } else {
  83.                         event.getPlayer().setMetadata("forcefield", new FixedMetadataValue(this, 1));
  84.                     }
  85.                 }
  86.             }
  87.         });
  88.     }
  89.  
  90.     @Override
  91.     public void onDisable() {
  92.        
  93.     }
  94.  
  95.     @Override
  96.     public boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
  97.         if (args != null && args.length > 0) {
  98.             if (args[0].equalsIgnoreCase("test") || args[0].equalsIgnoreCase("t")) {
  99.                 if (args == null || args.length != 2) {
  100.                     sender.sendMessage("Correct usage: /forcefield test <name>");
  101.                     return true;
  102.                 }
  103.                 final Player player = getServer().getPlayer(args[1]);
  104.                 if (player == null) {
  105.                     sender.sendMessage("That player couldn't be found.");
  106.                     return true;
  107.                 }
  108.                 if (player.getLocation().getBlock().getRelative(1, 0, 0).getType() != Material.AIR && player.getLocation().getBlock().getRelative(-1, 0, 0).getType() != Material.AIR
  109.                         && player.getLocation().getBlock().getRelative(0, 0, -1).getType() != Material.AIR && player.getLocation().getBlock().getRelative(0, 0, -1).getType() != Material.AIR) {
  110.                     sender.sendMessage("That player is in a 1x1 hole and can't be tested.");
  111.                 } else {
  112.                     spawn(player, player.getLocation(), false);
  113.                 }
  114.             } else if (args[0].equalsIgnoreCase("testinvis") || args[0].equalsIgnoreCase("ti")) {
  115.                 if (args == null || args.length != 2) {
  116.                     sender.sendMessage("Correct usage: /forcefield test <name>");
  117.                     return true;
  118.                 }
  119.                 final Player player = getServer().getPlayer(args[1]);
  120.                 if (player == null) {
  121.                     sender.sendMessage("That player couldn't be found.");
  122.                     return true;
  123.                 }
  124.                 if (player.getLocation().getBlock().getRelative(1, 0, 0).getType() != Material.AIR && player.getLocation().getBlock().getRelative(-1, 0, 0).getType() != Material.AIR
  125.                         && player.getLocation().getBlock().getRelative(0, 0, -1).getType() != Material.AIR && player.getLocation().getBlock().getRelative(0, 0, -1).getType() != Material.AIR) {
  126.                     sender.sendMessage("That player is in a 1x1 hole and can't be tested.");
  127.                 } else {
  128.                     spawn(player, player.getLocation(), true);
  129.                 }
  130.             } else if (args[0].equalsIgnoreCase("count") || args[0].equalsIgnoreCase("c")) {
  131.                 if (players.size() == 0) {
  132.                     sender.sendMessage("There are currently no players being counted.");
  133.                 } else {
  134.                     for (final Player player : players) {
  135.                         sender.sendMessage(player.getName() + " attacked a fake player " + player.getMetadata("forcefield").get(0).asInt() + " times.");
  136.                     }
  137.                 }
  138.             } else if (args[0].equalsIgnoreCase("clear")) {
  139.                 for (final Player player : players) {
  140.                     if (player.hasMetadata("forcefield")) {
  141.                         player.removeMetadata("forcefield", this);
  142.                     }
  143.                 }
  144.                 sender.sendMessage("You have cleared " + players.size() + " players from the counter.");
  145.                 players.clear();
  146.             }
  147.         }
  148.         return true;
  149.     }
  150.  
  151.     @EventHandler(priority = EventPriority.NORMAL)
  152.     public void onPlayerJoinEvent(final PlayerJoinEvent event) {
  153.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 223.5, 75, 286.5), true);
  154.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 219.5, 75, 295.5), true);
  155.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 285.5, 76, 301.5), true);
  156.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 285.5, 76, 281.5), true);
  157.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 293.5, 77, 301.5), true);
  158.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 393.5, 77, 281.5), true);
  159.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 312.5, 73, 282.5), true);
  160.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 320.5, 71, 304), true);
  161.         spawn(event.getPlayer(), new Location(getServer().getWorld("world"), 337.5, 74, 332.5), true);
  162.     }
  163.  
  164.     private void spawn(final Player player, final Location location, final boolean invis) {
  165.         final ProtocolManager manager = ProtocolLibrary.getProtocolManager();
  166.         final WrapperPlayServerNamedEntitySpawn spawned = new WrapperPlayServerNamedEntitySpawn();
  167.  
  168.         spawned.setPlayerUUID("" + index);
  169.         spawned.setEntityID(index);
  170.         spawned.setPosition(location.toVector());
  171.         spawned.setY(location.getY() - 1);
  172.         spawned.setPlayerName("Rabrg_" + index);
  173.        
  174.         spawned.setYaw(0);
  175.         spawned.setPitch(-45);
  176.        
  177.         final WrappedDataWatcher watcher = new WrappedDataWatcher();
  178.         watcher.setObject(0, (byte) (invis ? 0x20 : 0));
  179.         watcher.setObject(1, (short) 300);
  180.         watcher.setObject(8, (byte) 0);
  181.         spawned.setMetadata(watcher);
  182.        
  183.         indices.add(index);
  184.         timers.put(index, System.currentTimeMillis() + 1000);
  185.         index++;
  186.        
  187.         try {
  188.             manager.sendServerPacket(player, spawned.getHandle());
  189.         } catch (final InvocationTargetException e) {
  190.             e.printStackTrace();
  191.         }
  192.     }
  193.  
  194.     public void move(final Player player, final Location location, final int id) {
  195.         final ProtocolManager manager = ProtocolLibrary.getProtocolManager();
  196.         final WrapperPlayServerEntityTeleport spawned = new WrapperPlayServerEntityTeleport();
  197.        
  198.         spawned.setEntityID(id);
  199.         spawned.setX(location.getX());
  200.         spawned.setY(location.toVector().getY() - 1.25);
  201.         spawned.setZ(location.toVector().getZ());
  202.        
  203.         try {
  204.             manager.sendServerPacket(player, spawned.getHandle());
  205.         } catch (final InvocationTargetException e) {
  206.             e.printStackTrace();
  207.         }
  208.     }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement