|
1 | 1 | package me.crafter.mc.lockettepro;
|
2 | 2 |
|
| 3 | +import java.lang.reflect.Method; |
3 | 4 | import java.util.UUID;
|
4 | 5 |
|
5 | 6 | import org.bukkit.Bukkit;
|
| 7 | +import org.bukkit.Location; |
6 | 8 | import org.bukkit.block.Block;
|
7 | 9 | import org.bukkit.entity.Player;
|
8 | 10 | import org.bukkit.plugin.Plugin;
|
9 | 11 | import org.bukkit.plugin.RegisteredServiceProvider;
|
10 | 12 | import org.bukkit.scoreboard.Team;
|
11 | 13 |
|
12 | 14 | import com.bekvon.bukkit.residence.Residence;
|
| 15 | +import com.bekvon.bukkit.residence.protection.FlagPermissions; |
13 | 16 | import com.intellectualcrafters.plot.api.PlotAPI;
|
14 | 17 | import com.intellectualcrafters.plot.object.Plot;
|
15 | 18 | import com.massivecraft.factions.entity.BoardColl;
|
@@ -86,13 +89,19 @@ public static boolean isProtectedFrom(Block block, Player player){
|
86 | 89 | if (!worldguard.canBuild(player, block)) return true;
|
87 | 90 | }
|
88 | 91 | if (residence != null){
|
89 |
| - try { |
90 |
| - if (!Residence.getInstance().getPermsByLoc(block.getLocation()).playerHas(player.getName(), player.getWorld().getName(), "build", true)) return true; |
91 |
| - } catch (Exception ex){ |
92 |
| - LockettePro.getPlugin().getLogger().info("Note from author of LockettePro: If you have encountered the error above, this is because the Residence plugin had an API change that requires LockettePro to move on."); |
93 |
| - LockettePro.getPlugin().getLogger().info("Please update your Residence to 4.5+, if you are not able to do it now, use LockettePro 2.6.4- for now."); |
94 |
| - LockettePro.getPlugin().getLogger().info("It is possible, but not currently, to let LockettePro to support all Residence versions. If you think this is indeed necessary with high priority, please leave me a message at Spigot discussion section."); |
95 |
| - } |
| 92 | + try { // 1st try |
| 93 | + if (!Residence.getInstance().getPermsByLoc(block.getLocation()).playerHas(player.getName(), player.getWorld().getName(), "build", true)) |
| 94 | + return true; |
| 95 | + } catch (NoSuchMethodError ex){ |
| 96 | + try { |
| 97 | + Method getPermsByLoc = Residence.class.getDeclaredMethod("getPermsByLoc", Location.class); |
| 98 | + FlagPermissions fp = (FlagPermissions) getPermsByLoc.invoke(Residence.class, block.getLocation()); |
| 99 | + if (!fp.playerHas(player.getName(), player.getWorld().getName(), "build", true)) return true; |
| 100 | + } catch (Exception ex2){ |
| 101 | + LockettePro.getPlugin().getLogger().info("[LockettePro] Sorry but my workaround does not work..."); |
| 102 | + LockettePro.getPlugin().getLogger().info("[LockettePro] Please leave a comment on the discussion regarding the issue!"); |
| 103 | + } |
| 104 | + } catch (Exception e) {} |
96 | 105 | }
|
97 | 106 | if (towny != null){
|
98 | 107 | try {
|
|
0 commit comments