Skip to content

Commit

Permalink
feat: support Residence (#37)
Browse files Browse the repository at this point in the history
* support Residence

* fix README

* delete gradle proxy

* delete gradle proxy and cancel formatting

* chore: bump version

---------

Co-authored-by: Boy <[email protected]>
  • Loading branch information
BaiShenYaoDog and Boy0000 authored Sep 19, 2024
1 parent 970204a commit 95eb066
Show file tree
Hide file tree
Showing 5 changed files with 74 additions and 3 deletions.
5 changes: 3 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -40,12 +40,13 @@ dependencies {
compileOnly("com.plotsquared:PlotSquared-Bukkit")
//compileOnly("com.github.TechFortress:GriefPrevention:16.18")
implementation(files("libs/GriefPrevention-16.18.jar"))
compileOnly("net.william278.huskclaims:huskclaims-bukkit:1.1.2")
compileOnly("net.william278.huskclaims:huskclaims-bukkit:1.4")
compileOnly("net.william278.husktowns:husktowns-bukkit:3.0.4")
compileOnly(files("libs/Residence5.1.6.2.jar"))
}

java {
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}

tasks {
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1 +1 @@
pluginVersion=1.6.0
pluginVersion=1.6.1
Binary file added libs/Residence5.1.6.2.jar
Binary file not shown.
5 changes: 5 additions & 0 deletions src/main/java/io/th0rgal/protectionlib/ProtectionLib.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,11 @@ public static void init(JavaPlugin plugin) {
} catch (Exception | NoClassDefFoundError e) {
if (debug) e.printStackTrace();
}
try {
handleCompatibility("Residence", plugin, (m, p) -> new ResidenceCompat(m, p));
} catch (Exception | NoClassDefFoundError e) {
if (debug) e.printStackTrace();
}
}

public static void setDebug(boolean debug) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package io.th0rgal.protectionlib.compatibilities;

import com.bekvon.bukkit.residence.Residence;
import com.bekvon.bukkit.residence.containers.Flags;
import com.bekvon.bukkit.residence.protection.ClaimedResidence;
import io.th0rgal.protectionlib.ProtectionCompatibility;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.java.JavaPlugin;

public class ResidenceCompat extends ProtectionCompatibility {

Residence plugin = Residence.getInstance();

public ResidenceCompat(JavaPlugin mainPlugin, Plugin plugin) {
super(mainPlugin, plugin);
}

private boolean canDo(Player player, Location target, Flags flag) {
ClaimedResidence res = plugin.getResidenceManager().getByLoc(target);
return res == null || res.getPermissions().playerHas(player, flag, false);
}

/**
* @param player Player looking to place a block
* @param target Place where the player seeks to place a block
* @return true if he can put the block
*/
@Override
public boolean canBuild(Player player, Location target) {
return canDo(player, target, Flags.build);
}

/**
* @param player Player looking to break a block
* @param target Place where the player seeks to break a block
* @return true if he can break the block
*/
@Override
public boolean canBreak(Player player, Location target) {
return canDo(player, target, Flags.destroy);
}

/**
* @param player Player looking to interact with a block
* @param target Place where the player seeks to interact with a block
* @return true if he can interact with the block
*/
@Override
public boolean canInteract(Player player, Location target) {
// No single interact flag, so just check if player is on their own island
return canDo(player, target, Flags.use);
}

/**
* @param player Player looking to use an item
* @param target Place where the player seeks to use an item at a location
* @return true if he can use the item at the location
*/
public boolean canUse(Player player, Location target) {
// No single use flag, so just check if player is on their own island
return canDo(player, target, Flags.use);
}
}

0 comments on commit 95eb066

Please sign in to comment.