mirror of
https://github.com/TotalFreedomMC/TF-Marriage.git
synced 2024-05-19 19:11:21 +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!"),
|
||||
HEALTH_GIVEN("&aYou healed your partner by %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
|
||||
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_TELEPORT("Teleport to your partner"),
|
||||
COMMAND_HEAL("Send your health to your partner"),
|
||||
COMMAND_PVP("Enable/disable pvping with your partner"),
|
||||
|
||||
// WORDS
|
||||
STATUS("&aStatus: %s"),
|
||||
SINGLE("&fsingle");
|
||||
SINGLE("&fsingle"),
|
||||
ON_OFF("on/off");
|
||||
|
||||
private final String defaultMessage;
|
||||
private String message;
|
||||
|
|
|
@ -33,6 +33,7 @@ public enum Permissions {
|
|||
CHAT("marry.chat"),
|
||||
SEEN("marry.seen"),
|
||||
HEAL("marry.heal"),
|
||||
PVP_TOGGLE("marry.pvptoggle"),
|
||||
/**
|
||||
* Non-commands
|
||||
*/
|
||||
|
|
|
@ -31,13 +31,14 @@ public class Settings {
|
|||
"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}",
|
||||
"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"
|
||||
})
|
||||
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> 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_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_FEMALE = new ConfigOption<>("chat.female-prefix", "&d{icon:female} &r");
|
||||
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)
|
||||
public void registerListeners() {
|
||||
register(new PlayerListener(this));
|
||||
register(new ChatListener(this));
|
||||
register(new DatabaseListener(this));
|
||||
register(new KissListener(this));
|
||||
|
|
|
@ -74,6 +74,8 @@ public class ChatListener implements Listener {
|
|||
|
||||
if(Settings.FORCE_FORMAT.value()) {
|
||||
format = "{marriage_status}" + event.getFormat(); // Enforce marriage format
|
||||
} if(Settings.FORCE_GENDER_FORMAT.value()) {
|
||||
format = "{marriage_gender}" + event.getFormat();
|
||||
}
|
||||
|
||||
// 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