diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java b/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java index 5ac45fa..a694bdc 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/MPlayer.java @@ -13,6 +13,21 @@ public interface MPlayer { */ UUID getUniqueId(); + /** + * Request marriage with this player by another. + * + * @param from Player who requested the marriage. + */ + void requestMarriage(UUID from); + + /** + * Check if marriage with this player is requested by another. + * + * @param from Marriage requester. + * @return Whether or not marriage is requested by the player. + */ + boolean isMarriageRequested(UUID from); + /** * Get the player's gender. * diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/Marriage.java b/src/main/java/com/lenis0012/bukkit/marriage2/Marriage.java index 6f0cd58..9d5714c 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/Marriage.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/Marriage.java @@ -10,14 +10,13 @@ import com.lenis0012.bukkit.marriage2.internal.MarriagePlugin; import com.lenis0012.bukkit.marriage2.misc.BConfig; public interface Marriage { - /** * Return a {@link com.lenis0012.bukkit.marriage2.misc.BConfig} from a YAML file. * * @param file File name. * @return Bukkit configuration instance. */ - public BConfig getBukkitConfig(String file); + BConfig getBukkitConfig(String file); /** * Return a {@link com.lenis0012.bukkit.marriage2.MPlayer} instance of a player. @@ -25,33 +24,41 @@ public interface Marriage { * @param uuid Unique user id of the wanted player. * @return {@link com.lenis0012.bukkit.marriage2.MPlayer} of the wanted player. */ - public MPlayer getMPlayer(UUID uuid); + MPlayer getMPlayer(UUID uuid); + + /** + * Marry 2 players to eachother. + * + * @param player1 Player 1 + * @param player2 Player 2 + */ + void marry(MPlayer player1, MPlayer player2); /** * Register a {@link org.bukkit.event.Listener} to this plugin. * * @param listener Listener to be registered. */ - public void register(Listener listener); + void register(Listener listener); /** * Register a subcommand to the /marry command. * * @param commandClass Class of the sub command to be registered. */ - public void register(Class commandClass); + void register(Class commandClass); /** * Get the plugin logger instance. * * @return Plugin logger. */ - public Logger getLogger(); + Logger getLogger(); /** * Get the plugin instance. * * @return Plugin instance. */ - public MarriagePlugin getPlugin(); + MarriagePlugin getPlugin(); } \ No newline at end of file diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/commands/Command.java b/src/main/java/com/lenis0012/bukkit/marriage2/commands/Command.java index d54bfd8..81783d7 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/commands/Command.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/commands/Command.java @@ -5,9 +5,11 @@ import org.bukkit.ChatColor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import com.lenis0012.bukkit.marriage2.Marriage; import com.lenis0012.bukkit.marriage2.lang.Message; public abstract class Command { + protected final Marriage marriage; private final String[] aliases; private String description = "No description available"; private String usage = ""; @@ -19,7 +21,8 @@ public abstract class Command { protected Player player; private String[] args; - public Command(String... aliases) { + public Command(Marriage marriage, String... aliases) { + this.marriage = marriage; this.aliases = aliases; } @@ -66,15 +69,39 @@ public abstract class Command { } } + /** + * Reply to the command sender with a specified formatted message. + * + * @param message Message to send. + * @param args Formatting arguments + */ protected void reply(Message message, Object... args) { reply(message.toString(), args); } + /** + * Reply to the command sender with a formatted message. + * + * @param message Message to send. + * @param args Formatting arguments + * @deprecated Use the {@link Command#reply(Message, Object...) reply} method + */ + @Deprecated protected void reply(String message, Object... args) { message = ChatColor.translateAlternateColorCodes('&', String.format(message, args)); sender.sendMessage(message); } + protected void broadcast(Message message, Object... args) { + broadcast(message.toString(), args); + } + + @Deprecated + protected void broadcast(String message, Object... args) { + message = ChatColor.translateAlternateColorCodes('&', String.format(message, args)); + sender.sendMessage(message); + } + public String getPermission() { return permission; } diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandMarry.java b/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandMarry.java index 7e788ca..3011e0e 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandMarry.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandMarry.java @@ -1,13 +1,16 @@ package com.lenis0012.bukkit.marriage2.commands; +import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import com.lenis0012.bukkit.marriage2.MPlayer; +import com.lenis0012.bukkit.marriage2.Marriage; import com.lenis0012.bukkit.marriage2.lang.Message; public class CommandMarry extends Command { - public CommandMarry(){ - super("marry"); + public CommandMarry(Marriage marriage) { + super(marriage, "marry"); setDescription("Request a marriage with another player."); setUsage(""); @@ -19,11 +22,22 @@ public class CommandMarry extends Command { public void execute() { Player target = getArgAsPlayer(-1); if(target != null) { - if(System.out != null) { //TODO: Check if married - //TODO: Handle command delay - //TODO: Send marry request + MPlayer mPlayer = marriage.getMPlayer(player.getUniqueId()); + if(!mPlayer.isMarried()) { + MPlayer mTarget = marriage.getMPlayer(target.getUniqueId()); + if(!mTarget.isMarried()) { + if(mPlayer.isMarriageRequested(target.getUniqueId())) { + marriage.marry(mPlayer, mTarget); + broadcast(Message.MARRIED, player.getName(), target.getName()); + } else { + mTarget.requestMarriage(player.getUniqueId()); + target.sendMessage(ChatColor.translateAlternateColorCodes('&', String.format(Message.MARRIAGE_REQUESTED.toString(), player.getName(), player.getName()))); + } + } else { + reply(Message.TARGET_ALREADY_MARRIED, getArg(-1)); + } } else { - reply(Message.ALREADY_MARRIED, getArg(-1)); + reply(Message.ALREADY_MARRIED); } } else { reply(Message.PLAYER_NOT_FOUND, getArg(-1)); diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandTest.java b/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandTest.java deleted file mode 100644 index cba0e40..0000000 --- a/src/main/java/com/lenis0012/bukkit/marriage2/commands/CommandTest.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.lenis0012.bukkit.marriage2.commands; - -public class CommandTest extends Command { - - public CommandTest() { - super("test"); - setDescription("A test command"); - setPermission("marry.command.test"); - } - - @Override - public void execute() { - reply("&aThis is a test command :D"); - } -} diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCommandExecutor.java b/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCommandExecutor.java index 274a8b3..90c685f 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCommandExecutor.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCommandExecutor.java @@ -10,6 +10,7 @@ import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; +import com.lenis0012.bukkit.marriage2.Marriage; import com.lenis0012.bukkit.marriage2.commands.Command; public class MarriageCommandExecutor implements CommandExecutor { @@ -49,7 +50,7 @@ public class MarriageCommandExecutor implements CommandExecutor { public void regster(Class commandClass) { try { - Command command = commandClass.newInstance(); + Command command = commandClass.getConstructor(Marriage.class).newInstance(core); for(String alias : command.getAliases()) { commands.put(alias.toLowerCase(), command); } diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCore.java b/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCore.java index 3439fdc..6689b1e 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCore.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/internal/MarriageCore.java @@ -3,7 +3,7 @@ package com.lenis0012.bukkit.marriage2.internal; import java.util.UUID; import com.lenis0012.bukkit.marriage2.MPlayer; -import com.lenis0012.bukkit.marriage2.commands.CommandTest; +import com.lenis0012.bukkit.marriage2.commands.CommandMarry; import com.lenis0012.bukkit.marriage2.lang.Message; public class MarriageCore extends MarriageBase { @@ -14,7 +14,7 @@ public class MarriageCore extends MarriageBase { @Register(name = "commands", type = Register.Type.ENABLE) public void registerCommands() { - register(CommandTest.class); + register(CommandMarry.class); } @Register(name = "messages", type = Register.Type.ENABLE, priority = 1) @@ -24,7 +24,12 @@ public class MarriageCore extends MarriageBase { @Override public MPlayer getMPlayer(UUID uuid) { - //TODO: Everything... + // TODO: Everything... return null; } + + @Override + public void marry(MPlayer player1, MPlayer player2) { + // TODO: Marry player1 with player2 + } } diff --git a/src/main/java/com/lenis0012/bukkit/marriage2/lang/Message.java b/src/main/java/com/lenis0012/bukkit/marriage2/lang/Message.java index bd902be..ca3cff1 100644 --- a/src/main/java/com/lenis0012/bukkit/marriage2/lang/Message.java +++ b/src/main/java/com/lenis0012/bukkit/marriage2/lang/Message.java @@ -5,7 +5,10 @@ import com.lenis0012.bukkit.marriage2.misc.BConfig; public enum Message { PLAYER_NOT_FOUND("&cNo player named %s was found!"), - ALREADY_MARRIED("&cPlayers %s is already married to someone!"); + 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."); private final String defaultMessage; private String message;