Skip to content

Commit 3f612aa

Browse files
Merge pull request #396 from Sliman4/add-factions-support
Implement Factions protector
2 parents f657c43 + 5e89140 commit 3f612aa

File tree

6 files changed

+65
-7
lines changed

6 files changed

+65
-7
lines changed

build.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,7 @@ repositories {
8282
maven { url = 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
8383
mavenCentral()
8484
maven { url 'https://jitpack.io' }
85+
maven { url 'https://ci.ender.zone/plugin/repository/everything/' }
8586
}
8687

8788
/**
@@ -146,6 +147,7 @@ dependencies {
146147
implementation 'me.clip:placeholderapi:2.11.2'
147148
implementation 'com.github.LoneDev6:api-itemsadder:3.2.5'
148149
implementation 'io.th0rgal:oraxen:1.94.0'
150+
implementation 'com.massivecraft:Factions:1.6.9.5-U0.6.21'
149151

150152

151153
// Shaded

src/main/java/com/volmit/adapt/Adapt.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,9 @@
2121
import art.arcane.amulet.io.FolderWatcher;
2222
import com.volmit.adapt.api.data.WorldData;
2323
import com.volmit.adapt.api.potion.BrewingManager;
24+
import com.volmit.adapt.content.protector.FactionsClaimProtector;
2425
import com.volmit.adapt.api.protection.ProtectorRegistry;
25-
import com.volmit.adapt.api.protection.WorldGuardProtector;
26+
import com.volmit.adapt.content.protector.WorldGuardProtector;
2627
import com.volmit.adapt.api.tick.Ticker;
2728
import com.volmit.adapt.api.value.MaterialValue;
2829
import com.volmit.adapt.api.world.AdaptServer;
@@ -70,9 +71,7 @@ public Adapt() {
7071

7172
@Override
7273
public void onLoad() {
73-
if (getServer().getPluginManager().getPlugin("WorldGuard") != null) {
74-
ProtectorRegistry.registerProtector(new WorldGuardProtector());
75-
}
74+
loadDefaultProtectors();
7675
}
7776

7877
public static int getJavaVersion() {
@@ -236,5 +235,12 @@ private void setupMetrics() {
236235
}
237236
}
238237

239-
238+
private void loadDefaultProtectors() {
239+
if (getServer().getPluginManager().getPlugin("WorldGuard") != null) {
240+
ProtectorRegistry.registerProtector(new WorldGuardProtector());
241+
}
242+
if (getServer().getPluginManager().getPlugin("Factions") != null) {
243+
ProtectorRegistry.registerProtector(new FactionsClaimProtector());
244+
}
245+
}
240246
}

src/main/java/com/volmit/adapt/AdaptConfig.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,7 @@ public class AdaptConfig {
5353
private double playerXpPerSkillLevelUpLevelMultiplier = 44;
5454
private double powerPerLevel = 0.73;
5555
private boolean requireWorldguardBuildPermToUseAdaptations = true;
56+
private boolean requireFactionClaimOwnershipToUseAdaptations = false;
5657
private boolean hardcoreResetOnPlayerDeath = false;
5758
private boolean hardcoreNoRefunds = false;
5859
private boolean loginBonus = true;
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/*------------------------------------------------------------------------------
2+
- Adapt is a Skill/Integration plugin for Minecraft Bukkit Servers
3+
- Copyright (c) 2022 Arcane Arts (Volmit Software)
4+
-
5+
- This program is free software: you can redistribute it and/or modify
6+
- it under the terms of the GNU General Public License as published by
7+
- the Free Software Foundation, either version 3 of the License, or
8+
- (at your option) any later version.
9+
-
10+
- This program is distributed in the hope that it will be useful,
11+
- but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
- GNU General Public License for more details.
14+
-
15+
- You should have received a copy of the GNU General Public License
16+
- along with this program. If not, see <https://www.gnu.org/licenses/>.
17+
-----------------------------------------------------------------------------*/
18+
19+
package com.volmit.adapt.content.protector;
20+
21+
import com.massivecraft.factions.*;
22+
import com.volmit.adapt.AdaptConfig;
23+
import com.volmit.adapt.api.adaptation.Adaptation;
24+
import com.volmit.adapt.api.protection.Protector;
25+
import org.bukkit.Location;
26+
import org.bukkit.entity.Player;
27+
28+
public class FactionsClaimProtector implements Protector {
29+
@Override
30+
public boolean canBuild(Player p, Location l, Adaptation<?> adaptation) {
31+
Faction f = Board.getInstance().getFactionAt(new FLocation(l));
32+
FPlayer fp = FPlayers.getInstance().getByPlayer(p);
33+
return f == null
34+
|| f.isWilderness()
35+
|| fp.getFaction() == f
36+
|| fp.isAdminBypassing();
37+
}
38+
39+
@Override
40+
public String getName() {
41+
return "Factions";
42+
}
43+
44+
@Override
45+
public boolean isEnabledByDefault() {
46+
return AdaptConfig.get().isRequireFactionClaimOwnershipToUseAdaptations();
47+
}
48+
}

src/main/java/com/volmit/adapt/api/protection/WorldGuardProtector.java renamed to src/main/java/com/volmit/adapt/content/protector/WorldGuardProtector.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
- along with this program. If not, see <https://www.gnu.org/licenses/>.
1717
-----------------------------------------------------------------------------*/
1818

19-
package com.volmit.adapt.api.protection;
19+
package com.volmit.adapt.content.protector;
2020

2121
import com.sk89q.worldedit.bukkit.BukkitAdapter;
2222
import com.sk89q.worldguard.LocalPlayer;
@@ -26,6 +26,7 @@
2626
import com.sk89q.worldguard.protection.regions.RegionQuery;
2727
import com.volmit.adapt.AdaptConfig;
2828
import com.volmit.adapt.api.adaptation.Adaptation;
29+
import com.volmit.adapt.api.protection.Protector;
2930
import org.bukkit.Location;
3031
import org.bukkit.entity.Player;
3132

src/main/resources/plugin.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ main: com.volmit.adapt.Adapt
33
version: ${version}
44
authors: [ NextdoorPsycho, Cyberpwn, Vatuu ]
55
api-version: ${apiversion}
6-
softdepend: [ PlaceholderAPI, WorldGuard ]
6+
softdepend: [ PlaceholderAPI, WorldGuard, Factions ]
77
libraries:
88
- com.googlecode.concurrentlinkedhashmap:concurrentlinkedhashmap-lru:1.4.2
99
- org.apache.commons:commons-lang3:3.12.0

0 commit comments

Comments
 (0)