Skip to content

Commit 32bd382

Browse files
committed
Pending changes exported from your codespace
1 parent 6cc6eed commit 32bd382

File tree

5 files changed

+85
-3
lines changed

5 files changed

+85
-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)) 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

+18
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package me.matsubara.realisticvillagers.compatibility;
22

3+
import at.pcgamingfreaks.MarriageMaster.API.MarriagePlayer;
34
import org.bukkit.entity.Player;
45
import org.bukkit.entity.Villager;
56
import org.bukkit.plugin.Plugin;
@@ -29,4 +30,21 @@ public boolean handleVTL(Plugin plugin, Player player, Villager villager) {
2930
public boolean shouldCancelMetadata(Player player) {
3031
return compatibilities.get("ViaVersion") instanceof ViaCompatibility via && via.cancelMetadata(player);
3132
}
33+
34+
35+
36+
public boolean isMarried(Player player) {
37+
if (compatibilities.get("MarriageMaster") instanceof MarriageMaster marriageMaster) {
38+
MarriageManager manager = marriageMaster.getMarriageManager();
39+
MarriagePlayer<?, ?> marriagePlayer = manager.getMarriagePlayer(player.getUniqueId());
40+
41+
return marriagePlayer != null && marriagePlayer.isMarried();
42+
}
43+
return false;
44+
}
45+
46+
public boolean isDivorced(Player player) {
47+
return !isMarried(player);
48+
}
49+
3250
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package me.matsubara.realisticvillagers.compatibility;
2+
3+
import at.pcgamingfreaks.MarriageMaster.API.MarriagePlayer;
4+
import at.pcgamingfreaks.MarriageMaster.Bukkit.API.MarriageMasterPlugin;
5+
import at.pcgamingfreaks.MarriageMaster.Bukkit.API.MarriageManager;
6+
import org.bukkit.Bukkit;
7+
import org.bukkit.entity.Player;
8+
import org.bukkit.entity.Villager;
9+
import org.bukkit.plugin.Plugin;
10+
11+
public class MarriageCompatibility implements Compatibility {
12+
13+
private final MarriageMasterPlugin marriageMaster;
14+
15+
public MarriageCompatibility() {
16+
Plugin plugin = Bukkit.getPluginManager().getPlugin("MarriageMaster");
17+
if (plugin instanceof MarriageMasterPlugin) {
18+
this.marriageMaster = (MarriageMasterPlugin) plugin;
19+
Bukkit.getLogger().info("[RealisticVillagers] MarriageMaster detected and hooked.");
20+
} else {
21+
this.marriageMaster = null;
22+
}
23+
}
24+
25+
public boolean isMarried(Player player) {
26+
if (marriageMaster == null) return false;
27+
MarriageManager manager = marriageMaster.getMarriageManager();
28+
29+
// Get the MarriagePlayer object from the manager
30+
MarriagePlayer<?, ?> marriagePlayer = manager.getMarriagePlayer(player.getUniqueId());
31+
32+
// If marriagePlayer is null, the player is not registered in the system
33+
return marriagePlayer != null && marriagePlayer.isMarried();
34+
}
35+
36+
37+
public boolean isDivorced(Player player) {
38+
return !isMarried(player);
39+
}
40+
41+
@Override
42+
public boolean shouldTrack(Villager villager) {
43+
return true;
44+
}
45+
}

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)