Skip to content

Commit 8c10970

Browse files
Update Residence compatibility to all versions.
1 parent b7ea290 commit 8c10970

File tree

1 file changed

+16
-7
lines changed

1 file changed

+16
-7
lines changed

src/me/crafter/mc/lockettepro/Dependency.java

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
package me.crafter.mc.lockettepro;
22

3+
import java.lang.reflect.Method;
34
import java.util.UUID;
45

56
import org.bukkit.Bukkit;
7+
import org.bukkit.Location;
68
import org.bukkit.block.Block;
79
import org.bukkit.entity.Player;
810
import org.bukkit.plugin.Plugin;
911
import org.bukkit.plugin.RegisteredServiceProvider;
1012
import org.bukkit.scoreboard.Team;
1113

1214
import com.bekvon.bukkit.residence.Residence;
15+
import com.bekvon.bukkit.residence.protection.FlagPermissions;
1316
import com.intellectualcrafters.plot.api.PlotAPI;
1417
import com.intellectualcrafters.plot.object.Plot;
1518
import com.massivecraft.factions.entity.BoardColl;
@@ -86,13 +89,19 @@ public static boolean isProtectedFrom(Block block, Player player){
8689
if (!worldguard.canBuild(player, block)) return true;
8790
}
8891
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) {}
96105
}
97106
if (towny != null){
98107
try {

0 commit comments

Comments
 (0)