Skip to content

Commit 30d77fb

Browse files
committed
Pending changes exported from your codespace
1 parent 6cc6eed commit 30d77fb

File tree

5 files changed

+71
-3
lines changed

5 files changed

+71
-3
lines changed

core/pom.xml

+11
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,10 @@
149149
<id>viaversion-repo</id>
150150
<url>https://repo.viaversion.com</url>
151151
</repository>
152+
<repository>
153+
<id>pcgf-repo</id>
154+
<url>https://repo.pcgamingfreaks.at/repository/maven-everything</url>
155+
</repository>
152156
</repositories>
153157

154158
<dependencies>
@@ -227,5 +231,12 @@
227231
<version>2.7.0</version>
228232
<scope>provided</scope>
229233
</dependency>
234+
<!-- Marriage Master API -->
235+
<dependency>
236+
<groupId>at.pcgamingfreaks</groupId>
237+
<artifactId>MarriageMaster-API-Bukkit</artifactId>
238+
<version>2.4</version><!-- Check api-version shield for newest version -->
239+
<scope>provided</scope>
240+
</dependency>
230241
</dependencies>
231242
</project>

core/src/main/java/me/matsubara/realisticvillagers/RealisticVillagers.java

+2-1
Original file line numberDiff line numberDiff line change
@@ -164,6 +164,7 @@ public void onLoad() {
164164
addCompatibility("EliteMobs", EMCompatibility::new);
165165
addCompatibility("ViaVersion", ViaCompatibility::new);
166166
addCompatibility("VillagerTradeLimiter", VTLCompatibility::new);
167+
addCompatibility("MarriageMaster", MarriageCompatibility::new);
167168

168169
logger.info("Compatibilities loaded!");
169170
logger.info("");
@@ -797,7 +798,7 @@ public void saveResource(String name) {
797798
public boolean isMarried(@NotNull Player player) {
798799
String partner = player.getPersistentDataContainer().get(marriedWith, PersistentDataType.STRING);
799800
if (partner == null) return false;
800-
801+
if(compatibilityManager.isMarried(player) == null) return false;
801802
IVillagerNPC partnerInfo = tracker.getOffline(UUID.fromString(partner));
802803
if (partnerInfo == null) {
803804
player.getPersistentDataContainer().remove(marriedWith);

core/src/main/java/me/matsubara/realisticvillagers/compatibility/CompatibilityManager.java

+11
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,15 @@ public boolean handleVTL(Plugin plugin, Player player, Villager villager) {
2929
public boolean shouldCancelMetadata(Player player) {
3030
return compatibilities.get("ViaVersion") instanceof ViaCompatibility via && via.cancelMetadata(player);
3131
}
32+
33+
public boolean isMarried(Player player) {
34+
return compatibilities.get("MarriageMaster") instanceof MarriageMaster marriageMaster
35+
&& marriageMaster.isMarried(player);
36+
}
37+
38+
public boolean isDivorced(Player player) {
39+
return compatibilities.get("MarriageMaster") instanceof MarriageMaster marriageMaster
40+
&& marriageMaster.isDivorced(player);
41+
}
42+
3243
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package me.matsubara.realisticvillagers.compatibility;
2+
3+
import at.pcgamingfreaks.MarriageMaster.Bukkit.API.MarriageMasterPlugin;
4+
import at.pcgamingfreaks.MarriageMaster.Bukkit.API.MarriageManager;
5+
import org.bukkit.Bukkit;
6+
import org.bukkit.entity.Player;
7+
import org.bukkit.entity.Villager;
8+
import org.bukkit.plugin.Plugin;
9+
10+
public class MarriageCompatibility implements Compatibility {
11+
12+
private final MarriageMasterPlugin marriageMaster;
13+
14+
public MarriageCompatibility() {
15+
Plugin plugin = Bukkit.getPluginManager().getPlugin("MarriageMaster");
16+
if (plugin instanceof MarriageMasterPlugin) {
17+
this.marriageMaster = (MarriageMasterPlugin) plugin;
18+
Bukkit.getLogger().info("[RealisticVillagers] MarriageMaster detected and hooked.");
19+
} else {
20+
this.marriageMaster = null;
21+
}
22+
}
23+
24+
public boolean isMarried(Player player) {
25+
if (marriageMaster == null) return false;
26+
MarriageManager manager = marriageMaster.getMarriageManager();
27+
return manager.isMarried(player);
28+
}
29+
30+
public boolean isDivorced(Player player) {
31+
return !isMarried(player);
32+
}
33+
34+
@Override
35+
public boolean shouldTrack(Villager villager) {
36+
return true;
37+
}
38+
}

core/src/main/java/me/matsubara/realisticvillagers/listener/InventoryListeners.java

+9-2
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import me.matsubara.realisticvillagers.tracker.VillagerTracker;
2323
import me.matsubara.realisticvillagers.util.ItemBuilder;
2424
import me.matsubara.realisticvillagers.util.PluginUtils;
25+
import me.matsubara.realisticvillagers.compatibility;
2526
import net.wesjd.anvilgui.AnvilGUI;
2627
import org.apache.commons.lang3.tuple.Pair;
2728
import org.bukkit.*;
@@ -460,12 +461,14 @@ && cancelEquipment(player, interact)) {
460461

461462
npc.setProcreatingWith(playerUUID);
462463
new BabyTask(plugin, villager, player).runTaskTimer(plugin, 0L, 20L);
463-
} else if (isCustomItem(current, "divorce")) {
464+
} else if (isCustomItem(current, "divorce") || compatibilityManager.isMarried(player)) {
464465
// Return if it's a kid.
465466
if (conditionNotMet(player, villager.isAdult(), Messages.Message.INTERACT_FAIL_NOT_AN_ADULT)) return;
466467

467468
// Return if not married.
468-
if (conditionNotMet(player, isPartner, Messages.Message.INTERACT_FAIL_NOT_MARRIED)) return;
469+
if (conditionNotMet(player, isPartner || isMarriedInMarriageMaster, Messages.Message.INTERACT_FAIL_NOT_MARRIED)) return;
470+
471+
469472

470473
// Only remove divorce papers if the villager isn't a cleric partner.
471474
boolean hasDivorcePapers = (isPartner && villager.getProfession() == Villager.Profession.CLERIC)
@@ -486,6 +489,10 @@ && cancelEquipment(player, interact)) {
486489
messages.send(player, npc, Messages.Message.DIVORCE_NORMAL);
487490
}
488491

492+
493+
494+
495+
489496
// Divorce, remove and drop previous wedding ring.
490497
npc.divorceAndDropRing(player);
491498
} else if (isCustomItem(current, "combat")) {

0 commit comments

Comments
 (0)