mirror of
https://github.com/TotalFreedomMC/TF-Marriage.git
synced 2024-06-02 18:11:22 +00:00
Add pvp command
This commit is contained in:
parent
66e856bb87
commit
335d923a54
|
@ -0,0 +1,48 @@
|
||||||
|
package com.lenis0012.bukkit.marriage2.commands;
|
||||||
|
|
||||||
|
import com.lenis0012.bukkit.marriage2.MData;
|
||||||
|
import com.lenis0012.bukkit.marriage2.MPlayer;
|
||||||
|
import com.lenis0012.bukkit.marriage2.Marriage;
|
||||||
|
import com.lenis0012.bukkit.marriage2.config.Message;
|
||||||
|
import com.lenis0012.bukkit.marriage2.config.Permissions;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
public class CommandPVP extends Command {
|
||||||
|
public CommandPVP(Marriage marriage) {
|
||||||
|
super(marriage, "pvp");
|
||||||
|
setPermission(Permissions.PVP_TOGGLE);
|
||||||
|
setDescription(Message.COMMAND_PVP.toString());
|
||||||
|
setUsage(Message.ON_OFF.toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void execute() {
|
||||||
|
MPlayer mPlayer = marriage.getMPlayer(player.getUniqueId());
|
||||||
|
MData marriage = mPlayer.getMarriage();
|
||||||
|
if(marriage == null) {
|
||||||
|
reply(Message.NOT_MARRIED);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean value = value(marriage);
|
||||||
|
marriage.setPVPEnabled(value);
|
||||||
|
reply(value ? Message.PVP_ENABLED : Message.PVP_DISABLED);
|
||||||
|
|
||||||
|
Player partner = Bukkit.getPlayer(marriage.getOtherPlayer(player.getUniqueId()));
|
||||||
|
if(partner == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
reply(partner, Message.PARTNER_PVP);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean value(MData marriage) {
|
||||||
|
if(getArgLength() == 0) {
|
||||||
|
// Toggle
|
||||||
|
return !marriage.isPVPEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
|
return getArg(0).equalsIgnoreCase("on");
|
||||||
|
}
|
||||||
|
}
|
|
@ -48,6 +48,9 @@ public enum Message {
|
||||||
FULL_HEALTH("&cYour partner already has full health!"),
|
FULL_HEALTH("&cYour partner already has full health!"),
|
||||||
HEALTH_GIVEN("&aYou healed your partner by %s hearts!"),
|
HEALTH_GIVEN("&aYou healed your partner by %s hearts!"),
|
||||||
HEALTH_TAKEN("&aYou were healed by your partner with %s hearts!"),
|
HEALTH_TAKEN("&aYou were healed by your partner with %s hearts!"),
|
||||||
|
PVP_ENABLED("&aYou have enabled pvp with your partner!"),
|
||||||
|
PVP_DISABLED("&aYou have disabled pvp with your partner!"),
|
||||||
|
PARTNER_PVP("&aYour partner has changed pvp rules."),
|
||||||
|
|
||||||
// COMMANDS
|
// COMMANDS
|
||||||
COMMAND_MARRY("Request a marriage with another player"),
|
COMMAND_MARRY("Request a marriage with another player"),
|
||||||
|
@ -62,10 +65,12 @@ public enum Message {
|
||||||
COMMAND_SETHOME("Set a home for you a your partner"),
|
COMMAND_SETHOME("Set a home for you a your partner"),
|
||||||
COMMAND_TELEPORT("Teleport to your partner"),
|
COMMAND_TELEPORT("Teleport to your partner"),
|
||||||
COMMAND_HEAL("Send your health to your partner"),
|
COMMAND_HEAL("Send your health to your partner"),
|
||||||
|
COMMAND_PVP("Enable/disable pvping with your partner"),
|
||||||
|
|
||||||
// WORDS
|
// WORDS
|
||||||
STATUS("&aStatus: %s"),
|
STATUS("&aStatus: %s"),
|
||||||
SINGLE("&fsingle");
|
SINGLE("&fsingle"),
|
||||||
|
ON_OFF("on/off");
|
||||||
|
|
||||||
private final String defaultMessage;
|
private final String defaultMessage;
|
||||||
private String message;
|
private String message;
|
||||||
|
|
|
@ -33,6 +33,7 @@ public enum Permissions {
|
||||||
CHAT("marry.chat"),
|
CHAT("marry.chat"),
|
||||||
SEEN("marry.seen"),
|
SEEN("marry.seen"),
|
||||||
HEAL("marry.heal"),
|
HEAL("marry.heal"),
|
||||||
|
PVP_TOGGLE("marry.pvptoggle"),
|
||||||
/**
|
/**
|
||||||
* Non-commands
|
* Non-commands
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -31,13 +31,14 @@ public class Settings {
|
||||||
"Chat, set the format of private messages and in-chat status.",
|
"Chat, set the format of private messages and in-chat status.",
|
||||||
"Supported tags for chat: {partner}, for pm: {name}, {message}, chat spy: {sender}, {receiver}, {message}",
|
"Supported tags for chat: {partner}, for pm: {name}, {message}, chat spy: {sender}, {receiver}, {message}",
|
||||||
"Icons are always available: {icon:heart}, {icon:male}, {icon:female}, {icon:genderless}",
|
"Icons are always available: {icon:heart}, {icon:male}, {icon:female}, {icon:genderless}",
|
||||||
"If you use a custom chat plugin, put {marriage_status} in the format and set force-status-format to false",
|
"If you use a custom chat plugin, put {marriage_status} in the format and set force-status-format & force-gender-format to false",
|
||||||
"To show genders in chat, put {marriage_gender} in chat plugin format"
|
"To show genders in chat, put {marriage_gender} in chat plugin format"
|
||||||
})
|
})
|
||||||
public static final ConfigOption<String> PM_FORMAT = new ConfigOption<>("chat.pm-format", "&4{icon:heart}&c{name}&4{icon:heart} &7{message}");
|
public static final ConfigOption<String> PM_FORMAT = new ConfigOption<>("chat.pm-format", "&4{icon:heart}&c{name}&4{icon:heart} &7{message}");
|
||||||
public static final ConfigOption<String> CHAT_FORMAT = new ConfigOption<>("chat.status-format", "&4&l<3 &r");
|
public static final ConfigOption<String> CHAT_FORMAT = new ConfigOption<>("chat.status-format", "&4&l<3 &r");
|
||||||
public static final ConfigOption<String> CHATSPY_FORMAT = new ConfigOption<>("cat.spy-format", "&c[CHAT SPY] &7{sender} -> {receiver}&f: {message}");
|
public static final ConfigOption<String> CHATSPY_FORMAT = new ConfigOption<>("cat.spy-format", "&c[CHAT SPY] &7{sender} -> {receiver}&f: {message}");
|
||||||
public static final ConfigOption<Boolean> FORCE_FORMAT = new ConfigOption<>("chat.force-status-format", true);
|
public static final ConfigOption<Boolean> FORCE_FORMAT = new ConfigOption<>("chat.force-status-format", true);
|
||||||
|
public static final ConfigOption<Boolean> FORCE_GENDER_FORMAT = new ConfigOption<>("chat.force-gender-format", true);
|
||||||
public static final ConfigOption<String> PREFIX_MALE = new ConfigOption<>("chat.male-prefix", "&b{icon:male} &r");
|
public static final ConfigOption<String> PREFIX_MALE = new ConfigOption<>("chat.male-prefix", "&b{icon:male} &r");
|
||||||
public static final ConfigOption<String> PREFIX_FEMALE = new ConfigOption<>("chat.female-prefix", "&d{icon:female} &r");
|
public static final ConfigOption<String> PREFIX_FEMALE = new ConfigOption<>("chat.female-prefix", "&d{icon:female} &r");
|
||||||
public static final ConfigOption<String> PREFIX_GENDERLESS = new ConfigOption<>("chat.genderless-prefix", "");
|
public static final ConfigOption<String> PREFIX_GENDERLESS = new ConfigOption<>("chat.genderless-prefix", "");
|
||||||
|
|
|
@ -81,6 +81,7 @@ public class MarriageCore extends MarriageBase {
|
||||||
|
|
||||||
@Register(name = "listeners", type = Register.Type.ENABLE)
|
@Register(name = "listeners", type = Register.Type.ENABLE)
|
||||||
public void registerListeners() {
|
public void registerListeners() {
|
||||||
|
register(new PlayerListener(this));
|
||||||
register(new ChatListener(this));
|
register(new ChatListener(this));
|
||||||
register(new DatabaseListener(this));
|
register(new DatabaseListener(this));
|
||||||
register(new KissListener(this));
|
register(new KissListener(this));
|
||||||
|
|
|
@ -74,6 +74,8 @@ public class ChatListener implements Listener {
|
||||||
|
|
||||||
if(Settings.FORCE_FORMAT.value()) {
|
if(Settings.FORCE_FORMAT.value()) {
|
||||||
format = "{marriage_status}" + event.getFormat(); // Enforce marriage format
|
format = "{marriage_status}" + event.getFormat(); // Enforce marriage format
|
||||||
|
} if(Settings.FORCE_GENDER_FORMAT.value()) {
|
||||||
|
format = "{marriage_gender}" + event.getFormat();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Marriage status
|
// Marriage status
|
||||||
|
|
|
@ -0,0 +1,59 @@
|
||||||
|
package com.lenis0012.bukkit.marriage2.listeners;
|
||||||
|
|
||||||
|
import com.lenis0012.bukkit.marriage2.MPlayer;
|
||||||
|
import com.lenis0012.bukkit.marriage2.Marriage;
|
||||||
|
import org.bukkit.entity.Entity;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.entity.Projectile;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
import org.bukkit.event.EventPriority;
|
||||||
|
import org.bukkit.event.Listener;
|
||||||
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
import org.bukkit.projectiles.ProjectileSource;
|
||||||
|
|
||||||
|
public class PlayerListener implements Listener {
|
||||||
|
private final Marriage marriage;
|
||||||
|
|
||||||
|
public PlayerListener(Marriage marriage) {
|
||||||
|
this.marriage = marriage;
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler(priority = EventPriority.LOWEST)
|
||||||
|
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
|
||||||
|
final Entity e0 = event.getEntity();
|
||||||
|
final Entity e1 = event.getDamager();
|
||||||
|
// Verify damaged entity is player
|
||||||
|
if(!(e0 instanceof Player)) {
|
||||||
|
return;
|
||||||
|
} if(!(e1 instanceof Player) && !(e1 instanceof Projectile)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify damager is player
|
||||||
|
final Player player = (Player) e0;
|
||||||
|
final Player damager;
|
||||||
|
if(e1 instanceof Player) {
|
||||||
|
damager = (Player) e1;
|
||||||
|
} else {
|
||||||
|
Projectile projectile = (Projectile) e1;
|
||||||
|
final ProjectileSource e3 = projectile.getShooter();
|
||||||
|
if(e3 == null || !(e3 instanceof Player)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
damager = (Player) e3;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify marriage
|
||||||
|
MPlayer mplayer = marriage.getMPlayer(player.getUniqueId());
|
||||||
|
if(!mplayer.isMarried() || mplayer.getMarriage().getOtherPlayer(player.getUniqueId()) != damager.getUniqueId()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Verify pvp setting
|
||||||
|
if(mplayer.getMarriage().isPVPEnabled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue