2019-10-17 16:04:43 -06:00
|
|
|
package dev.esophose.playerparticles.command;
|
2018-09-26 02:07:46 -06:00
|
|
|
|
2019-12-09 12:04:06 -07:00
|
|
|
import dev.esophose.playerparticles.PlayerParticles;
|
2019-12-12 19:32:53 -07:00
|
|
|
import dev.esophose.playerparticles.manager.LocaleManager;
|
2019-10-17 16:04:43 -06:00
|
|
|
import dev.esophose.playerparticles.manager.PermissionManager;
|
|
|
|
import dev.esophose.playerparticles.particles.PPlayer;
|
|
|
|
import dev.esophose.playerparticles.particles.ParticleEffect;
|
|
|
|
import dev.esophose.playerparticles.particles.ParticleEffect.ParticleProperty;
|
2019-12-12 19:32:53 -07:00
|
|
|
import dev.esophose.playerparticles.util.StringPlaceholders;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import org.bukkit.util.StringUtil;
|
2018-09-26 02:07:46 -06:00
|
|
|
|
|
|
|
public class DataCommandModule implements CommandModule {
|
|
|
|
|
2018-09-27 18:16:50 -06:00
|
|
|
public void onCommandExecute(PPlayer pplayer, String[] args) {
|
2019-12-12 19:32:53 -07:00
|
|
|
LocaleManager localeManager = PlayerParticles.getInstance().getManager(LocaleManager.class);
|
|
|
|
|
2018-09-27 18:16:50 -06:00
|
|
|
if (args.length > 0) {
|
|
|
|
ParticleEffect effect = ParticleEffect.fromName(args[0]);
|
2018-10-06 13:53:31 -06:00
|
|
|
if (effect == null) {
|
2019-12-12 19:32:53 -07:00
|
|
|
localeManager.sendMessage(pplayer, "effect-invalid", StringPlaceholders.single("effect", args[0]));
|
2018-10-06 13:53:31 -06:00
|
|
|
return;
|
|
|
|
}
|
2018-09-27 18:16:50 -06:00
|
|
|
|
2018-10-06 13:53:31 -06:00
|
|
|
if (effect.hasProperty(ParticleProperty.COLORABLE)) {
|
|
|
|
if (effect == ParticleEffect.NOTE) {
|
2019-12-12 19:32:53 -07:00
|
|
|
localeManager.sendMessage(pplayer, "data-usage-note", StringPlaceholders.single("effect", effect.getName()));
|
2018-09-27 18:16:50 -06:00
|
|
|
} else {
|
2019-12-12 19:32:53 -07:00
|
|
|
localeManager.sendMessage(pplayer, "data-usage-color", StringPlaceholders.single("effect", effect.getName()));
|
2018-09-27 18:16:50 -06:00
|
|
|
}
|
2018-10-06 13:53:31 -06:00
|
|
|
} else if (effect.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
|
|
|
|
if (effect == ParticleEffect.ITEM) {
|
2019-12-12 19:32:53 -07:00
|
|
|
localeManager.sendMessage(pplayer, "data-usage-item", StringPlaceholders.single("effect", effect.getName()));
|
2018-10-06 13:53:31 -06:00
|
|
|
} else {
|
2019-12-12 19:32:53 -07:00
|
|
|
localeManager.sendMessage(pplayer, "data-usage-block", StringPlaceholders.single("effect", effect.getName()));
|
2018-10-06 13:53:31 -06:00
|
|
|
}
|
|
|
|
} else {
|
2019-12-12 19:32:53 -07:00
|
|
|
localeManager.sendMessage(pplayer, "data-usage-none", StringPlaceholders.single("effect", effect.getName()));
|
2018-09-27 18:16:50 -06:00
|
|
|
}
|
|
|
|
} else {
|
2019-12-12 19:32:53 -07:00
|
|
|
localeManager.sendMessage(pplayer, "data-no-args");
|
2018-09-27 18:16:50 -06:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
public List<String> onTabComplete(PPlayer pplayer, String[] args) {
|
2019-12-09 12:04:06 -07:00
|
|
|
PermissionManager permissionManager = PlayerParticles.getInstance().getManager(PermissionManager.class);
|
2019-04-28 00:17:08 -06:00
|
|
|
List<String> matches = new ArrayList<>();
|
2018-10-06 13:53:31 -06:00
|
|
|
if (args.length <= 1) {
|
2019-12-09 12:04:06 -07:00
|
|
|
if (args.length == 0) {
|
|
|
|
matches = permissionManager.getEffectNamesUserHasPermissionFor(pplayer.getPlayer());
|
|
|
|
} else {
|
|
|
|
StringUtil.copyPartialMatches(args[0], permissionManager.getEffectNamesUserHasPermissionFor(pplayer.getPlayer()), matches);
|
|
|
|
}
|
2018-10-06 13:53:31 -06:00
|
|
|
}
|
|
|
|
return matches;
|
2018-09-27 18:16:50 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
public String getName() {
|
|
|
|
return "data";
|
|
|
|
}
|
|
|
|
|
2019-12-09 12:04:06 -07:00
|
|
|
public String getDescriptionKey() {
|
|
|
|
return "command-description-data";
|
2018-09-27 18:16:50 -06:00
|
|
|
}
|
|
|
|
|
|
|
|
public String getArguments() {
|
|
|
|
return "<effect>";
|
|
|
|
}
|
|
|
|
|
|
|
|
public boolean requiresEffects() {
|
|
|
|
return true;
|
|
|
|
}
|
|
|
|
|
2019-07-16 01:32:45 -06:00
|
|
|
public boolean canConsoleExecute() {
|
|
|
|
return false;
|
|
|
|
}
|
|
|
|
|
2018-09-26 02:07:46 -06:00
|
|
|
}
|