33
packages/plugins/docs/MiaoMail.md
Normal file
33
packages/plugins/docs/MiaoMail.md
Normal file
@@ -0,0 +1,33 @@
|
||||
private static void injectInventoryAddItemMethod() {
|
||||
System.out.println("Injectoring Mail...");
|
||||
try {
|
||||
ClassPool pool = ClassPool.getDefault();
|
||||
String inventoryClassName = Bukkit.getServer().getClass().getPackage().getName() + ".inventory.CraftInventory";
|
||||
File classFile = new File(URLDecoder.decode(InventoryDragEvent.class.getProtectionDomain().getCodeSource().getLocation().getPath().split("!")[0], "UTF-8"));
|
||||
pool.appendClassPath(classFile.getPath());
|
||||
classFile = new File(URLDecoder.decode(MailPlugin.class.getProtectionDomain().getCodeSource().getLocation().getPath().split("!")[0], "UTF-8"));
|
||||
pool.appendClassPath(classFile.getPath());
|
||||
CtClass inventoryClass = pool.get(inventoryClassName);
|
||||
CtMethod addItemMethod = inventoryClass.getDeclaredMethod("addItem");
|
||||
|
||||
addItemMethod.insertAfter(
|
||||
"if(this instanceof org.bukkit.inventory.PlayerInventory){"
|
||||
+ " final org.bukkit.inventory.PlayerInventory playerInventory = (org.bukkit.inventory.PlayerInventory)this;"
|
||||
+ " final org.bukkit.entity.Player player = (org.bukkit.entity.Player)playerInventory.getHolder();"
|
||||
+ " if(!$_.values().isEmpty()){"
|
||||
+ " org.bukkit.event.inventory.InventoryDragEvent event = new org.bukkit.event.inventory.InventoryDragEvent(player.getOpenInventory(), new org.bukkit.inventory.ItemStack(org.bukkit.Material.AIR), new org.bukkit.inventory.ItemStack(org.bukkit.Material.AIR), true, $_);"
|
||||
+ " event.setCancelled(true);"
|
||||
+ " event.setResult(org.bukkit.event.Event.Result.DENY);"
|
||||
+ " org.bukkit.Bukkit.getPluginManager().callEvent(event);"
|
||||
+ " }"
|
||||
+ "}");
|
||||
try {
|
||||
inventoryClass.toClass();
|
||||
System.out.println("Injected");
|
||||
} catch (Exception e) {
|
||||
System.out.println("Inject fail, Please restart server");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user