Advertisement
Guest User

Bukkit/Forge event utils

a guest
Mar 4th, 2016
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.38 KB | None | 0 0
  1. package com.gamerforea.bukkit;
  2.  
  3. import java.lang.reflect.Method;
  4.  
  5. import org.bukkit.Bukkit;
  6. import org.bukkit.block.Block;
  7. import org.bukkit.entity.Player;
  8. import org.bukkit.event.block.BlockBreakEvent;
  9.  
  10. import net.minecraft.entity.Entity;
  11. import net.minecraft.entity.player.EntityPlayer;
  12.  
  13. public class EventUtils
  14. {
  15.     private static final Method getBukkitEntity;
  16.  
  17.     public static final boolean cantBreak(EntityPlayer player, int x, int y, int z)
  18.     {
  19.         try
  20.         {
  21.             Block blockBukkit = Bukkit.getWorld(player.worldObj.getWorldInfo().getWorldName()).getBlockAt(x, y, z);
  22.             Player playerBukkit = (Player) toBukkitEntity(player);
  23.             BlockBreakEvent event = new BlockBreakEvent(blockBukkit, playerBukkit);
  24.             Bukkit.getPluginManager().callEvent(event);
  25.             return event.isCancelled();
  26.         }
  27.         catch (Throwable throwable)
  28.         {
  29.             System.err.println(String.format("Failed call BlockBreakEvent: %s has break on X:%d, Y:%d, Z:%d", player.toString(), x, y, z));
  30.             return true;
  31.         }
  32.     }
  33.  
  34.     public static final org.bukkit.entity.Entity toBukkitEntity(Entity entity) throws Exception
  35.     {
  36.         return (org.bukkit.entity.Entity) getBukkitEntity.invoke(entity);
  37.     }
  38.  
  39.     static
  40.     {
  41.         try
  42.         {
  43.             getBukkitEntity = Entity.class.getDeclaredMethod("getBukkitEntity");
  44.         }
  45.         catch (Throwable throwable)
  46.         {
  47.             throw new RuntimeException("Failed hooking Entity.getBukkitEntity() method!", throwable);
  48.         }
  49.     }
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement