Skip to content

Commit c969741

Browse files
committed
marriagemaster compability
1 parent b6e93e6 commit c969741

File tree

4 files changed

+96
-4
lines changed

4 files changed

+96
-4
lines changed

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

+3-1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@ public final class RealisticVillagers extends JavaPlugin {
9898
private OtherListeners otherListeners;
9999
private PlayerListeners playerListeners;
100100
private VillagerListeners villagerListeners;
101+
private MarriageListener marriageListener;
101102

102103
private VillagerTracker tracker;
103104
private @Setter Shape ring;
@@ -272,7 +273,8 @@ public void onEnable() {
272273
(inventoryListeners = new InventoryListeners(this)),
273274
(otherListeners = new OtherListeners(this)),
274275
(playerListeners = new PlayerListeners(this)),
275-
(villagerListeners = new VillagerListeners(this)));
276+
(villagerListeners = new VillagerListeners(this))),
277+
(marriageListener = new MarriageListener(this)));
276278

277279
// Used in previous versions, not needed any more.
278280
FileUtils.deleteQuietly(new File(getDataFolder(), "villagers.yml"));

core/src/main/java/me/matsubara/realisticvillagers/command/MainCommand.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ private String getAgeStage(CommandSender sender, String string) {
313313
plugin.getMessages().send(sender, notFound);
314314
return null;
315315
}
316-
private CompatibilityManager compatibilityManager;
316+
317317
private void handleForceDivorce(CommandSender sender, @NotNull String[] args) {
318318
Messages messages = plugin.getMessages();
319319
VillagerTracker tracker = plugin.getTracker();

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

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

33
import at.pcgamingfreaks.MarriageMaster.API.MarriageMasterPlugin;
4-
5-
import at.pcgamingfreaks.MarriageMaster.API.MarriageManager;
64
import at.pcgamingfreaks.MarriageMaster.API.MarriagePlayer;
75
import org.bukkit.entity.Player;
86
import org.bukkit.plugin.Plugin;
@@ -13,8 +11,11 @@
1311
import java.util.UUID;
1412

1513

14+
15+
1616
public class MarriageCompatibility implements Compatibility {
1717

18+
1819
public MarriageMasterPlugin getMarriageMaster() {
1920
Plugin bukkitPlugin = Bukkit.getPluginManager().getPlugin("MarriageMaster");
2021
return (MarriageMasterPlugin) bukkitPlugin;
@@ -24,6 +25,7 @@ public boolean marriedPlayer(@NotNull Player player) {
2425

2526
UUID playerUUID = player.getUniqueId();
2627
MarriagePlayer data = getMarriageMaster().getPlayerData(playerUUID);
28+
System.out.println("marriedplayer");
2729
return data.isMarried();
2830
}
2931
@Override
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
package me.matsubara.realisticvillagers.listener;
2+
3+
4+
import at.pcgamingfreaks.MarriageMaster.Bukkit.API.Events.MarriedEvent;
5+
import com.github.retrooper.packetevents.PacketEvents;
6+
import com.github.retrooper.packetevents.event.PacketListenerPriority;
7+
import me.matsubara.realisticvillagers.RealisticVillagers;
8+
import me.matsubara.realisticvillagers.entity.IVillagerNPC;
9+
import me.matsubara.realisticvillagers.files.Messages;
10+
import me.matsubara.realisticvillagers.nms.INMSConverter;
11+
import me.matsubara.realisticvillagers.tracker.VillagerTracker;
12+
import org.bukkit.entity.LivingEntity;
13+
import org.bukkit.entity.Player;
14+
import org.bukkit.event.EventHandler;
15+
import org.bukkit.event.Listener;
16+
import org.bukkit.persistence.PersistentDataType;
17+
18+
import java.util.UUID;
19+
20+
public class MarriageListener implements Listener {
21+
private final RealisticVillagers plugin;
22+
23+
public MarriageListener(RealisticVillagers plugin) {
24+
super(PacketListenerPriority.HIGHEST);
25+
this.plugin = plugin;
26+
PacketEvents.getAPI().getEventManager().registerListener(this);
27+
}
28+
29+
@EventHandler
30+
private void ForceDivorcewhenmarried(MarriedEvent event) {
31+
Messages messages = plugin.getMessages();
32+
VillagerTracker tracker = plugin.getTracker();
33+
INMSConverter converter = plugin.getConverter();
34+
35+
36+
Player player1 = event.getPlayer1();
37+
Player player2 = event.getPlayer2();
38+
UUID partnerUUID1 = null;
39+
UUID partnerUUID2 = null;
40+
41+
42+
String uuidString = player1.getPersistentDataContainer().get(plugin.getMarriedWith(), PersistentDataType.STRING);
43+
if (uuidString != null) partnerUUID1 = event.getPlayer1().getUUID();
44+
player1.getPersistentDataContainer().remove(plugin.getMarriedWith());
45+
46+
String uuidString2 = player2.getPersistentDataContainer().get(plugin.getMarriedWith(), PersistentDataType.STRING);
47+
if (uuidString2 != null) partnerUUID2 = event.getPlayer2().getUUID();
48+
player2.getPersistentDataContainer().remove(plugin.getMarriedWith());
49+
50+
51+
52+
for (IVillagerNPC offlineVillager : tracker.getOfflineVillagers()) {
53+
if (!offlineVillager.getUniqueId().equals(partnerUUID1)) continue;
54+
55+
LivingEntity bukkit = offlineVillager.bukkit();
56+
if (bukkit == null) {
57+
bukkit = plugin.getUnloadedOffline(offlineVillager);
58+
if (bukkit == null) continue;
59+
}
60+
61+
// In this case, we don't need to ignore invalid villagers.
62+
IVillagerNPC npc = converter.getNPC(bukkit).orElse(null);
63+
if (npc == null) continue;
64+
65+
npc.divorceAndDropRing(player1);
66+
break;
67+
}
68+
for (IVillagerNPC offlineVillager : tracker.getOfflineVillagers()) {
69+
if (!offlineVillager.getUniqueId().equals(partnerUUID2)) continue;
70+
71+
LivingEntity bukkit = offlineVillager.bukkit();
72+
if (bukkit == null) {
73+
bukkit = plugin.getUnloadedOffline(offlineVillager);
74+
if (bukkit == null) continue;
75+
}
76+
77+
// In this case, we don't need to ignore invalid villagers.
78+
IVillagerNPC npc = converter.getNPC(bukkit).orElse(null);
79+
if (npc == null) continue;
80+
81+
npc.divorceAndDropRing(player1);
82+
break;
83+
}
84+
85+
// At this point, either the player or the villager (or both) should be divorced.
86+
87+
}
88+
}

0 commit comments

Comments
 (0)