mirror of
https://github.com/TotalFreedomMC/TF-ProjectKorra.git
synced 2024-05-29 08:21:25 +00:00
f39c7f7186
## Fixes * Fixes #1079 - Netherite weapons not being counted as weapons * Fixes #1034 - Abilities working through walls * Fixes #1057 - Bad wording for toggle command. * Fixes #1080 - IceSpike not working with a bottle source * Fixes #1086 - Torrent not working with a bottle source * Fix Illumination displacing water
170 lines
7.9 KiB
Java
170 lines
7.9 KiB
Java
package com.projectkorra.projectkorra.command;
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.Collections;
|
|
import java.util.List;
|
|
|
|
import org.bukkit.Bukkit;
|
|
import org.bukkit.ChatColor;
|
|
import org.bukkit.command.CommandSender;
|
|
import org.bukkit.configuration.file.FileConfiguration;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import com.projectkorra.projectkorra.BendingPlayer;
|
|
import com.projectkorra.projectkorra.Element;
|
|
import com.projectkorra.projectkorra.Element.SubElement;
|
|
import com.projectkorra.projectkorra.GeneralMethods;
|
|
import com.projectkorra.projectkorra.configuration.ConfigManager;
|
|
|
|
/**
|
|
* Executor for /bending toggle. Extends {@link PKCommand}.
|
|
*/
|
|
public class ToggleCommand extends PKCommand {
|
|
|
|
private final String toggledOffForAll, toggleOffSelf, toggleOnSelf, toggleOffAll, toggleOnAll, toggledOffSingleElement, toggledOnSingleElement, wrongElementOther, toggledOnOtherElementConfirm, toggledOffOtherElementConfirm, toggledOnOtherElement, toggledOffOtherElement, wrongElement, notFound;
|
|
|
|
public ToggleCommand() {
|
|
super("toggle", "/bending toggle <All/Element> [Player]", ConfigManager.languageConfig.get().getString("Commands.Toggle.Description"), new String[] { "toggle", "t" });
|
|
|
|
final FileConfiguration c = ConfigManager.languageConfig.get();
|
|
|
|
this.toggledOffForAll = c.getString("Commands.Toggle.All.ToggledOffForAll");
|
|
this.toggleOffSelf = c.getString("Commands.Toggle.ToggledOff");
|
|
this.toggleOnSelf = c.getString("Commands.Toggle.ToggledOn");
|
|
this.toggleOffAll = c.getString("Commands.Toggle.All.ToggleOff");
|
|
this.toggleOnAll = c.getString("Commands.Toggle.All.ToggleOn");
|
|
this.toggledOffSingleElement = c.getString("Commands.Toggle.ToggleOffSingleElement");
|
|
this.toggledOnSingleElement = c.getString("Commands.Toggle.ToggleOnSingleElement");
|
|
this.wrongElementOther = c.getString("Commands.Toggle.Other.WrongElement");
|
|
this.toggledOnOtherElementConfirm = c.getString("Commands.Toggle.Other.ToggledOnElementConfirm");
|
|
this.toggledOffOtherElementConfirm = c.getString("Commands.Toggle.Other.ToggledOffElementConfirm");
|
|
this.toggledOnOtherElement = c.getString("Commands.Toggle.Other.ToggledOnElementByOther");
|
|
this.toggledOffOtherElement = c.getString("Commands.Toggle.Other.ToggledOffElementByOther");
|
|
this.wrongElement = c.getString("Commands.Toggle.WrongElement");
|
|
this.notFound = c.getString("Commands.Toggle.Other.PlayerNotFound");
|
|
}
|
|
|
|
@Override
|
|
public void execute(final CommandSender sender, final List<String> args) {
|
|
if (!this.correctLength(sender, args.size(), 0, 2)) {
|
|
return;
|
|
} else if (args.size() == 0) { // bending toggle,
|
|
if (!this.hasPermission(sender) || !this.isPlayer(sender)) {
|
|
return;
|
|
}
|
|
if (Commands.isToggledForAll) {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.toggledOffForAll);
|
|
return;
|
|
}
|
|
BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(sender.getName());
|
|
if (bPlayer == null) {
|
|
GeneralMethods.createBendingPlayer(((Player) sender).getUniqueId(), sender.getName());
|
|
bPlayer = BendingPlayer.getBendingPlayer(sender.getName());
|
|
}
|
|
if (bPlayer.isToggled()) {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.toggleOffSelf);
|
|
bPlayer.toggleBending();
|
|
} else {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.GREEN + this.toggleOnSelf);
|
|
bPlayer.toggleBending();
|
|
}
|
|
} else if (args.size() == 1) {
|
|
if (args.size() == 1 && args.get(0).equalsIgnoreCase("all") && this.hasPermission(sender, "all")) { // bending toggle all.
|
|
if (Commands.isToggledForAll) { // Bending is toggled off for all players.
|
|
Commands.isToggledForAll = false;
|
|
for (final Player player : Bukkit.getOnlinePlayers()) {
|
|
GeneralMethods.sendBrandingMessage(player, ChatColor.GREEN + this.toggleOnAll);
|
|
}
|
|
if (!(sender instanceof Player)) {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.GREEN + this.toggleOnAll);
|
|
}
|
|
|
|
} else {
|
|
Commands.isToggledForAll = true;
|
|
for (final Player player : Bukkit.getOnlinePlayers()) {
|
|
GeneralMethods.sendBrandingMessage(player, ChatColor.RED + this.toggleOffAll);
|
|
}
|
|
if (!(sender instanceof Player)) {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.toggleOffAll);
|
|
}
|
|
}
|
|
} else if (sender instanceof Player && args.size() == 1 && Element.fromString(args.get(0)) != null && !(Element.fromString(args.get(0)) instanceof SubElement)) {
|
|
if (!BendingPlayer.getBendingPlayer(sender.getName()).hasElement(Element.fromString(args.get(0)))) {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.wrongElement);
|
|
return;
|
|
}
|
|
final Element e = Element.fromString(args.get(0));
|
|
final ChatColor color = e != null ? e.getColor() : null;
|
|
final BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(sender.getName());
|
|
bPlayer.toggleElement(e);
|
|
|
|
if (bPlayer.isElementToggled(e)) {
|
|
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOnSingleElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
|
} else {
|
|
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOffSingleElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
|
}
|
|
} else {
|
|
this.help(sender, false);
|
|
}
|
|
|
|
} else if (sender instanceof Player && args.size() == 2 && Element.fromString(args.get(0)) != null && !(Element.fromString(args.get(0)) instanceof SubElement)) {
|
|
final Player target = Bukkit.getPlayer(args.get(1));
|
|
if (!this.hasAdminPermission(sender)) {
|
|
return;
|
|
}
|
|
if (target == null) {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.notFound);
|
|
return;
|
|
}
|
|
if (!BendingPlayer.getBendingPlayer(target.getName()).hasElement(Element.fromString(args.get(0)))) {
|
|
GeneralMethods.sendBrandingMessage(sender, ChatColor.RED + this.wrongElementOther.replace("{target}", ChatColor.DARK_AQUA + target.getName() + ChatColor.RED));
|
|
return;
|
|
}
|
|
final Element e = Element.fromString(args.get(0));
|
|
final BendingPlayer bPlayer = BendingPlayer.getBendingPlayer(target.getName());
|
|
final ChatColor color = e != null ? e.getColor() : null;
|
|
|
|
if (bPlayer.isElementToggled(e)) {
|
|
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOffOtherElementConfirm.replace("{target}", target.getName()).replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
|
GeneralMethods.sendBrandingMessage(target, color + this.toggledOffOtherElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")).replace("{sender}", ChatColor.DARK_AQUA + sender.getName()));
|
|
} else {
|
|
GeneralMethods.sendBrandingMessage(sender, color + this.toggledOnOtherElementConfirm.replace("{target}", target.getName()).replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")));
|
|
GeneralMethods.sendBrandingMessage(target, color + this.toggledOnOtherElement.replace("{element}", e.getName() + (e.getType() != null ? e.getType().getBending() : "")).replace("{sender}", ChatColor.DARK_AQUA + sender.getName()));
|
|
}
|
|
bPlayer.toggleElement(e);
|
|
} else {
|
|
this.help(sender, false);
|
|
}
|
|
}
|
|
|
|
public boolean hasAdminPermission(final CommandSender sender) {
|
|
if (!sender.hasPermission("bending.admin.toggle")) {
|
|
GeneralMethods.sendBrandingMessage(sender, super.noPermissionMessage);
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@Override
|
|
protected List<String> getTabCompletion(final CommandSender sender, final List<String> args) {
|
|
if (args.size() >= 2 || !sender.hasPermission("bending.command.toggle.others")) {
|
|
return new ArrayList<String>();
|
|
}
|
|
final List<String> l = new ArrayList<String>();
|
|
if (args.size() == 0) {
|
|
final List<String> elements = new ArrayList<String>();
|
|
for (final Element e : Element.getAllElements()) {
|
|
elements.add(e.getName());
|
|
}
|
|
Collections.sort(elements);
|
|
l.add("All");
|
|
l.addAll(elements);
|
|
} else {
|
|
for (final Player p : Bukkit.getOnlinePlayers()) {
|
|
l.add(p.getName());
|
|
}
|
|
}
|
|
return l;
|
|
}
|
|
}
|