From 06ce7d6d88c44eaf87e53bd482cb3243a05c7694 Mon Sep 17 00:00:00 2001 From: Lennart ten Wolde <0p1q9o2w@hotmail.nl> Date: Sun, 14 Dec 2014 03:36:33 +0100 Subject: [PATCH] Add divorce command --- .../lenis0012/bukkit/marriage/Marriage.java | 2 +- .../bukkit/marriage/util/PacketUtil.java | 16 +++++------ .../lenis0012/bukkit/marriage2/MPlayer.java | 12 +++++++++ .../marriage2/commands/CommandDivorce.java | 27 +++++++++++++++++++ .../bukkit/marriage2/config/Message.java | 4 ++- .../internal/data/MarriagePlayer.java | 20 ++++++++++++++ .../marriage2/listeners/DatabaseListener.java | 2 +- 7 files changed, 72 insertions(+), 11 deletions(-) create mode 100644 src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandDivorce.java diff --git a/src/main/java/com/lenis0012/bukkit/marriage/Marriage.java b/src/main/java/com/lenis0012/bukkit/marriage/Marriage.java index 6026acb..d68e553 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage/Marriage.java +++ b/src/main/java/com/lenis0012/bukkit/marriage/Marriage.java @@ -45,7 +45,7 @@ public class Marriage extends JavaPlugin { private Map players = new WeakHashMap(); private Updater updater; - public static String COMPAT_VERSION = "v1_7_R4"; + public static String COMPAT_VERSION = "v1_8_R1"; public static boolean IS_COMPATIBLE = true; public Map configs = new HashMap(); diff --git a/src/main/java/com/lenis0012/bukkit/marriage/util/PacketUtil.java b/src/main/java/com/lenis0012/bukkit/marriage/util/PacketUtil.java index a63be8a..96bfc3c 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage/util/PacketUtil.java +++ b/src/main/java/com/lenis0012/bukkit/marriage/util/PacketUtil.java @@ -3,16 +3,16 @@ package com.lenis0012.bukkit.marriage.util; import java.lang.reflect.Field; import java.util.Random; -import net.minecraft.server.v1_7_R4.DataWatcher; -import net.minecraft.server.v1_7_R4.EntityPlayer; -import net.minecraft.server.v1_7_R4.MathHelper; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityDestroy; -import net.minecraft.server.v1_7_R4.PacketPlayOutEntityStatus; -import net.minecraft.server.v1_7_R4.PacketPlayOutSpawnEntityLiving; -import net.minecraft.server.v1_7_R4.PacketPlayOutWorldParticles; +import net.minecraft.server.v1_8_R1.DataWatcher; +import net.minecraft.server.v1_8_R1.EntityPlayer; +import net.minecraft.server.v1_8_R1.MathHelper; +import net.minecraft.server.v1_8_R1.PacketPlayOutEntityDestroy; +import net.minecraft.server.v1_8_R1.PacketPlayOutEntityStatus; +import net.minecraft.server.v1_8_R1.PacketPlayOutSpawnEntityLiving; +import net.minecraft.server.v1_8_R1.PacketPlayOutWorldParticles; import org.bukkit.Location; -import org.bukkit.craftbukkit.v1_7_R4.entity.CraftPlayer; +import org.bukkit.craftbukkit.v1_8_R1.entity.CraftPlayer; import org.bukkit.entity.Player; public class PacketUtil { diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java b/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java index a694bdc..1f02295 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java @@ -70,4 +70,16 @@ public interface MPlayer { * @param inChat Whether or not the player is in marry chat-mode. */ void setInChat(boolean inChat); + + /** + * Get the current player's partner + * + * @return Current partner of the player + */ + MPlayer getPartner(); + + /** + * Divorce with the current player's partner + */ + void divorce(); } \ No newline at end of file diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandDivorce.java b/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandDivorce.java new file mode 100644 index 0000000..42ba1e5 --- /dev/null +++ b/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandDivorce.java @@ -0,0 +1,27 @@ +package com.lenis0012.bukkit.marriage2.commands; + +import org.bukkit.Bukkit; + +import com.lenis0012.bukkit.marriage2.MPlayer; +import com.lenis0012.bukkit.marriage2.Marriage; +import com.lenis0012.bukkit.marriage2.config.Message; + +public class CommandDivorce extends Command { + + public CommandDivorce(Marriage marriage, String[] aliases) { + super(marriage, "divorce"); + setDescription("Divorce your current partner"); + } + + @Override + public void execute() { + MPlayer mPlayer = marriage.getMPlayer(player.getUniqueId()); + MPlayer partner = mPlayer.getPartner(); + if(partner != null) { + mPlayer.divorce(); + broadcast(Message.DIVORCED, player.getName(), Bukkit.getOfflinePlayer(partner.getUniqueId()).getName()); + } else { + reply(Message.NOT_MARRIED); + } + } +} diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/config/Message.java b/src/main/java/com/lenis0012/bukkit/marriage2/config/Message.java index f3b2432..c63e87a 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/config/Message.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/config/Message.java @@ -8,7 +8,9 @@ public enum Message { TARGET_ALREADY_MARRIED("&cPlayers %s is already married to someone!"), ALREADY_MARRIED("&cYou are already married to someone!"), MARRIED("&a&lPlayer %s and %s are now officially married!"), - MARRIAGE_REQUESTED("&aPlayer %s has requested you to marry with them, use &e/marry %s &ato accept it."); + MARRIAGE_REQUESTED("&aPlayer %s has requested you to marry with them, use &e/marry %s &ato accept it."), + NOT_MARRIED("&cYou are currently not married with someone!"), + DIVORCED("&aPlayer %s and %s have divorced!"); private final String defaultMessage; private String message; diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/internal/data/MarriagePlayer.java b/src/main/java/com/lenis0012/bukkit/marriage2/internal/data/MarriagePlayer.java index b202fa2..87c26f1 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/internal/data/MarriagePlayer.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/internal/data/MarriagePlayer.java @@ -11,6 +11,8 @@ import net.minecraft.util.com.google.common.collect.Lists; import com.lenis0012.bukkit.marriage2.Gender; import com.lenis0012.bukkit.marriage2.MData; import com.lenis0012.bukkit.marriage2.MPlayer; +import com.lenis0012.bukkit.marriage2.Marriage; +import com.lenis0012.bukkit.marriage2.internal.MarriagePlugin; public class MarriagePlayer implements MPlayer { private final List requests = Lists.newArrayList(); @@ -80,4 +82,22 @@ public class MarriagePlayer implements MPlayer { public void setInChat(boolean inChat) { this.inChat = inChat; } + + @Override + public MPlayer getPartner() { + Marriage core = MarriagePlugin.getInstance(); + UUID id = null; + if(marriage != null) { + id = uuid.equals(marriage.getPlayer1Id()) ? marriage.getPllayer2Id() : marriage.getPlayer1Id(); + } + + return core.getMPlayer(id); + } + + @Override + public void divorce() { + MarriagePlayer partner = (MarriagePlayer) getPartner(); + partner.marriage = null; + this.marriage = null; + } } \ No newline at end of file diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/listeners/DatabaseListener.java b/src/main/java/com/lenis0012/bukkit/marriage2/listeners/DatabaseListener.java index 588d357..e7a7df8 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/listeners/DatabaseListener.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/listeners/DatabaseListener.java @@ -21,7 +21,7 @@ public class DatabaseListener implements Listener { if(event.getLoginResult() == Result.ALLOWED) { core.getMPlayer(event.getUniqueId()); } - } + } @EventHandler(priority = EventPriority.LOWEST) public void onPlayerJoin(PlayerJoinEvent event) {