-
Notifications
You must be signed in to change notification settings - Fork 25
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #91 from Weesli/main
created Rclaim integration
- Loading branch information
Showing
5 changed files
with
173 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
63 changes: 63 additions & 0 deletions
63
src/main/java/xyz/geik/farmer/integrations/rclaim/RClaim.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
package xyz.geik.farmer.integrations.rclaim; | ||
|
||
import net.weesli.rClaim.api.RClaimAPI; | ||
import net.weesli.rClaim.utils.Claim; | ||
import org.bukkit.Location; | ||
import xyz.geik.farmer.integrations.Integrations; | ||
|
||
import java.util.Optional; | ||
import java.util.UUID; | ||
|
||
/** | ||
* Main RClaim integration class that extends Integration | ||
* | ||
* @author Weesli | ||
* @since 25.08.2024 | ||
*/ | ||
public class RClaim extends Integrations { | ||
|
||
/** | ||
* Constructor register event of super class | ||
* | ||
*/ | ||
public RClaim() {super(new RClaimListener());} | ||
|
||
/** | ||
* Gets UUID of owner from RClaimAPI by regionId | ||
* | ||
* @param regionID id of region | ||
* @return UUID of region owner | ||
*/ | ||
@Override | ||
public UUID getOwnerUUID(String regionID) { | ||
return RClaimAPI.getInstance().getClaim(regionID).getOwner(); | ||
} | ||
|
||
/** | ||
* Gets UUID of owner from RClaimAPI by location | ||
* | ||
* @param location location of region | ||
* @return UUID of region owner | ||
*/ | ||
@Override | ||
public UUID getOwnerUUID(Location location) { | ||
Claim claim = RClaimAPI.getInstance().getClaim(location.getChunk()); | ||
if (claim != null){ | ||
return claim.getOwner(); | ||
} | ||
return null; | ||
} | ||
|
||
/** | ||
* Gets getRegionID of location | ||
* | ||
* @param location location of region | ||
* @return id of region | ||
*/ | ||
@Override | ||
public String getRegionID(Location location) { | ||
Claim claim = RClaimAPI.getInstance().getClaim(location.getChunk()); | ||
Optional<Claim> center_claim = RClaimAPI.getInstance().getClaims().stream().filter(c -> c.isOwner(claim.getOwner())).filter(Claim::isCenter).findFirst(); | ||
return center_claim.map(Claim::getID).orElse(null); | ||
} | ||
} |
98 changes: 98 additions & 0 deletions
98
src/main/java/xyz/geik/farmer/integrations/rclaim/RClaimListener.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
package xyz.geik.farmer.integrations.rclaim; | ||
|
||
import net.weesli.rClaim.api.RClaimAPI; | ||
import net.weesli.rClaim.api.events.ClaimCreateEvent; | ||
import net.weesli.rClaim.api.events.ClaimDeleteEvent; | ||
import net.weesli.rClaim.api.events.TrustedPlayerEvent; | ||
import net.weesli.rClaim.api.events.UnTrustedPlayerEvent; | ||
import net.weesli.rClaim.utils.Claim; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
import xyz.geik.farmer.Main; | ||
import xyz.geik.farmer.api.FarmerAPI; | ||
import xyz.geik.farmer.api.handlers.FarmerBoughtEvent; | ||
import xyz.geik.farmer.api.managers.FarmerManager; | ||
import xyz.geik.farmer.model.Farmer; | ||
import xyz.geik.farmer.model.user.FarmerPerm; | ||
import xyz.geik.farmer.model.user.User; | ||
import xyz.geik.glib.chat.ChatUtils; | ||
|
||
import java.util.Optional; | ||
import java.util.UUID; | ||
|
||
/** | ||
* RClaim Integration Listener class | ||
* | ||
* @author Weesli | ||
* @since 25.08.2024 | ||
*/ | ||
public class RClaimListener implements Listener { | ||
|
||
/** | ||
* When a player creates a claim, if the automatic farmer is on, a farmer is added to the claim point. | ||
* | ||
* @param e Event of ClaimCrateEvent | ||
*/ | ||
@EventHandler | ||
public void createClaim(ClaimCreateEvent e){ | ||
String claimId = e.getClaim().getID(); | ||
if (Main.getConfigFile().getSettings().isAutoCreateFarmer()) { | ||
Farmer farmer = new Farmer(claimId, 0); | ||
ChatUtils.sendMessage(e.getSender(), Main.getLangFile().getMessages().getBoughtFarmer()); | ||
} | ||
} | ||
|
||
/** | ||
* After a claimant adds a player to their territory, the added player is granted farmer access | ||
* @param e Event of TrustedPlayerEvent | ||
*/ | ||
@EventHandler | ||
public void trustPlayer(TrustedPlayerEvent e){ | ||
Claim claim = RClaimAPI.getInstance().getClaims().stream().filter(c -> c.isOwner(e.getTruster().getUniqueId())).toList().get(0); | ||
if (!FarmerManager.getFarmers().containsKey(claim.getID())) return; | ||
UUID target = e.getTrusted().getUniqueId(); | ||
Farmer farmer = FarmerManager.getFarmers().get(claim.getID()); | ||
farmer.addUser(target,Bukkit.getOfflinePlayer(target).getName(), FarmerPerm.COOP); | ||
} | ||
|
||
/** | ||
* If the requester removes a trusted player from the demand zone, farmer access is terminated | ||
* @param e Event of UnTrustedPlayerEvent | ||
*/ | ||
@EventHandler | ||
public void unTrustPlayer(UnTrustedPlayerEvent e){ | ||
Claim claim = RClaimAPI.getInstance().getClaims().stream().filter(c -> c.isOwner(e.getTruster().getUniqueId())).toList().get(0); | ||
if (!FarmerManager.getFarmers().containsKey(claim.getID())) return; | ||
Farmer farmer = FarmerManager.getFarmers().get(claim.getID()); | ||
Optional<User> user = farmer.getUsersWithoutOwner().stream().filter(u -> u.getUuid().equals(e.getTrusted().getUniqueId())).findFirst(); | ||
user.ifPresent(farmer::removeUser); | ||
} | ||
|
||
/** | ||
* When a claim is deleted, the farmer is removed as well | ||
* @param e Event of UnTrustedPlayerEvent | ||
*/ | ||
@EventHandler | ||
public void deleteClaim(ClaimDeleteEvent e){ | ||
if (FarmerManager.farmers.containsKey(e.getClaim().getID())){ | ||
FarmerAPI.getFarmerManager().removeFarmer(e.getClaim().getID()); | ||
} | ||
} | ||
|
||
/** | ||
* When the farmer is subsequently purchased, access is granted to all members in the Region. | ||
* @param e Event of buyFarmer | ||
*/ | ||
@EventHandler | ||
public void buyFarmer(FarmerBoughtEvent e) { | ||
String claimId = e.getFarmer().getRegionID(); | ||
Optional<Claim> center_claim = RClaimAPI.getInstance().getClaims().stream().filter(c -> c.isOwner(e.getFarmer().getOwnerUUID())).filter(Claim::isCenter).findFirst(); | ||
if (!center_claim.isPresent()) return; | ||
e.getFarmer().setRegionID(claimId); | ||
Claim claim = RClaimAPI.getInstance().getClaim(claimId); | ||
for (UUID member : claim.getMembers()) { | ||
e.getFarmer().addUser(member, Bukkit.getOfflinePlayer(member).getName(), FarmerPerm.COOP); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters