Skip to content

Commit

Permalink
Merge pull request #91 from Weesli/main
Browse files Browse the repository at this point in the history
created Rclaim integration
  • Loading branch information
poyrazinan committed Aug 24, 2024
2 parents 75d87dc + 5afdd9e commit 824cf27
Show file tree
Hide file tree
Showing 5 changed files with 173 additions and 1 deletion.
7 changes: 7 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -126,6 +126,13 @@
<version>2.2.1</version>
<scope>provided</scope>
</dependency>
<!-- RClaim -->
<dependency>
<groupId>com.github.Weesli</groupId>
<artifactId>RClaim</artifactId>
<version>1.2.0</version>
</dependency>

</dependencies>

<!-- Repos -->
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/xyz/geik/farmer/integrations/Integrations.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import xyz.geik.farmer.integrations.grief.GriefPrevent;
import xyz.geik.farmer.integrations.iridiumskyblock.IridiumSkyblock;
import xyz.geik.farmer.integrations.lands.Lands;
import xyz.geik.farmer.integrations.rclaim.RClaim;
import xyz.geik.farmer.integrations.superior.SuperiorSkyblock;
import xyz.geik.farmer.integrations.townyadvanced.TownyAdvanced;
import xyz.geik.farmer.integrations.ultimateclaims.UltimateClaims;
Expand Down Expand Up @@ -85,6 +86,9 @@ else if (Bukkit.getPluginManager().isPluginEnabled("IridiumSkyblock"))
Main.setIntegration(new IridiumSkyblock());
else if (Bukkit.getPluginManager().isPluginEnabled("UltimateClaims"))
Main.setIntegration(new UltimateClaims());
else if(Bukkit.getPluginManager().isPluginEnabled("RClaim")){
Main.setIntegration(new RClaim());
}
}
}.runTaskLater(Main.getInstance(), 1);
}
Expand Down
63 changes: 63 additions & 0 deletions src/main/java/xyz/geik/farmer/integrations/rclaim/RClaim.java
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);
}
}
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);
}
}
}
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Farmer
author: Geik, Amowny, WaterArchery, hyperion, rudde, mehmet-27, Khontrom
author: Geik, Amowny, WaterArchery, hyperion, rudde, mehmet-27, Khontrom, weesli
main: xyz.geik.farmer.Main
version: v6-b107
api-version: 1.13
Expand Down

0 comments on commit 824cf27

Please sign in to comment.