Skip to content

Commit 8dff035

Browse files
committed
Pending changes exported from your codespace
1 parent 6cc6eed commit 8dff035

File tree

6 files changed

+87
-5
lines changed

6 files changed

+87
-5
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

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

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

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") || plugin.getCompatibilityManager().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, Messages.Message.INTERACT_FAIL_NOT_MARRIED) || conditionNotMet(player, plugin.getCompatibilityManager().isMarried(player), 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")) {

core/src/main/java/me/matsubara/realisticvillagers/tracker/VillagerTracker.java

+1-2
Original file line numberDiff line numberDiff line change
@@ -334,8 +334,7 @@ public Optional<NPC> getNPC(int entityId) {
334334
}
335335

336336
public boolean isInvalid(@NotNull LivingEntity living, boolean ignoreSkinState) {
337-
return (!ignoreSkinState && Config.DISABLE_SKINS.asBool())
338-
|| (!(living instanceof WanderingTrader) && (!(living instanceof Villager villager) || !plugin.getCompatibilityManager().shouldTrack(villager)))
337+
return (!(living instanceof WanderingTrader) && (!(living instanceof Villager villager) || !plugin.getCompatibilityManager().shouldTrack(villager)))
339338
|| plugin.isDisabledIn(living.getWorld())
340339
|| plugin.getConverter().getNPC(living).isEmpty();
341340
}

0 commit comments

Comments
 (0)