Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @EventHandler(priority = EventPriority.NORMAL)
- public void onPlayerInteract(PlayerInteractEvent event) {
- if(event.isCancelled()) {
- return;
- }
- Player player = event.getPlayer();
- Material heldItem = player.getItemInHand().getType();
- Block block = event.getClickedBlock();
- Material mat = block.getType();
- ILog.sendToPlayer(player, mat.toString());
- if(!((isContainer(mat, block) || isCanUseEntity_RClickOnly(mat, block)) && event.getAction() == Action.RIGHT_CLICK_BLOCK || isCanUseEntity_BothClick(mat, block)||event.getAction() == Action.PHYSICAL)) {
- int typeId = player.getItemInHand().getTypeId();
- if(typeId != Residence.getConfigManager().getSelectionTooldID() && typeId != Residence.getConfigManager().getInfoToolID()&&typeId!=351) {
- return;
- }
- }
- ILog.sendToPlayer(player, "onPlayerInteract Fired");
- FlagPermissions perms = Residence.getPermsByLocForPlayer(block.getLocation(),player);
- String world = player.getWorld().getName();
- String permgroup = Residence.getPermissionManager().getGroupNameByPlayer(player);
- boolean resadmin = Residence.isResAdminOn(player);
- if(event.getAction() == Action.PHYSICAL){
- if(!resadmin){
- boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
- boolean hastrample = perms.playerHas(player.getName(), world, "trample", perms.playerHas(player.getName(), world, "build", true));
- boolean haspressure = perms.playerHas(player.getName(), world, "pressure", hasuse);
- if((!hasuse && !haspressure || !haspressure)&&(mat==Material.STONE_PLATE || mat == Material.WOOD_PLATE)){
- event.setCancelled(true);
- return;
- }
- if(!hastrample && (mat == Material.SOIL || mat == Material.SOUL_SAND)){
- event.setCancelled(true);
- return;
- }
- }
- }
- if(!resadmin && !Residence.getItemManager().isAllowed(heldItem, permgroup, world)) {
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("ItemBlacklisted"));
- event.setCancelled(true);
- return;
- }
- if(event.getAction() == Action.LEFT_CLICK_BLOCK || event.getAction() == Action.RIGHT_CLICK_BLOCK) {
- if (player.getItemInHand().getTypeId() == Residence.getConfigManager().getSelectionTooldID()) {
- PermissionGroup group = Residence.getPermissionManager().getGroup(player);
- if(player.hasPermission("residence.create") || group.canCreateResidences()&&!player.isPermissionSet("residence.create") || resadmin) {
- if (event.getAction() == Action.LEFT_CLICK_BLOCK) {
- Location loc = block.getLocation();
- Residence.getSelectionManager().placeLoc1(player, loc);
- player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("SelectPoint",Residence.getLanguage().getPhrase("Primary"))+ChatColor.RED+"(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")"+ChatColor.GREEN+"!");
- } else if (event.getAction() == Action.RIGHT_CLICK_BLOCK) {
- Location loc = block.getLocation();
- Residence.getSelectionManager().placeLoc2(player, loc);
- player.sendMessage(ChatColor.GREEN+Residence.getLanguage().getPhrase("SelectPoint",Residence.getLanguage().getPhrase("Secondary"))+ChatColor.RED+"(" + loc.getBlockX() + "," + loc.getBlockY() + "," + loc.getBlockZ() + ")"+ChatColor.GREEN+"!");
- }
- }
- }
- if(player.getItemInHand().getTypeId() == Residence.getConfigManager().getInfoToolID()) {
- if(event.getAction() == Action.LEFT_CLICK_BLOCK) {
- Location loc = block.getLocation();
- String res = Residence.getResidenceManager().getNameByLoc(loc);
- if(res!=null) {
- Residence.getResidenceManager().printAreaInfo(res, player);
- event.setCancelled(true);
- }
- if(res==null){
- event.setCancelled(true);
- player.sendMessage(Residence.getLanguage().getPhrase("NoResHere"));
- }
- }
- }
- if(!resadmin) {
- if(player.getItemInHand()!=null){
- if(event.getAction()==Action.RIGHT_CLICK_BLOCK){
- if(player.getItemInHand().getTypeId()==351){
- if(player.getItemInHand().getData().getData()==15&&block.getType()==Material.GRASS||player.getItemInHand().getData().getData()==3&&block.getTypeId()==17&&(block.getData()==3||block.getData()==7||block.getData()==11||block.getData()==15)){
- perms = Residence.getPermsByLocForPlayer(block.getRelative(event.getBlockFace()).getLocation(), player);
- if(!perms.playerHas(player.getName(), world, "build", true)) {
- event.setCancelled(true);
- return;
- }
- return;
- }
- }
- }
- }
- if (isContainer(mat,block) || isCanUseEntity(mat, block)) {
- boolean hasuse = perms.playerHas(player.getName(), world, "use", true);
- for(Entry<Material, String> checkMat : FlagPermissions.getMaterialUseFlagList().entrySet()) {
- if(mat == checkMat.getKey()) {
- if(!perms.playerHas(player.getName(), world, checkMat.getValue(), hasuse)) {
- if(hasuse||checkMat.getValue().equals("container")) {
- event.setCancelled(true);
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("FlagDeny",checkMat.getValue()));
- } else {
- event.setCancelled(true);
- player.sendMessage(ChatColor.RED+Residence.getLanguage().getPhrase("FlagDeny","use"));
- }
- }
- }
- }
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment