PlayerParticles/src/com/esophose/playerparticles/command/AddCommandModule.java

147 lines
5.8 KiB
Java
Raw Normal View History

package com.esophose.playerparticles.command;
import java.util.List;
2018-09-29 17:27:37 -06:00
import org.bukkit.Material;
import com.esophose.playerparticles.manager.DataManager;
2018-09-29 17:27:37 -06:00
import com.esophose.playerparticles.manager.LangManager;
import com.esophose.playerparticles.manager.ParticleManager;
import com.esophose.playerparticles.manager.PermissionManager;
import com.esophose.playerparticles.manager.LangManager.Lang;
import com.esophose.playerparticles.particles.PPlayer;
2018-09-29 17:27:37 -06:00
import com.esophose.playerparticles.particles.ParticleEffect;
import com.esophose.playerparticles.particles.ParticleEffect.NoteColor;
import com.esophose.playerparticles.particles.ParticleEffect.OrdinaryColor;
import com.esophose.playerparticles.particles.ParticleEffect.ParticleProperty;
import com.esophose.playerparticles.particles.ParticleGroup;
import com.esophose.playerparticles.particles.ParticlePair;
2018-09-29 17:27:37 -06:00
import com.esophose.playerparticles.styles.api.ParticleStyle;
import com.esophose.playerparticles.styles.api.ParticleStyleManager;
import com.esophose.playerparticles.util.ParticleUtils;
public class AddCommandModule implements CommandModule {
public void onCommandExecute(PPlayer pplayer, String[] args) {
2018-09-29 17:27:37 -06:00
if (args.length < 2) {
CommandModule.printUsage(pplayer, this);
return;
}
ParticleEffect effect = ParticleManager.effectFromString(args[0]);
if (effect == null) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.EFFECT_INVALID, args[0]);
2018-09-29 17:27:37 -06:00
return;
} else if (!PermissionManager.hasEffectPermission(pplayer.getPlayer(), effect)) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.EFFECT_NO_PERMISSION, effect.getName());
2018-09-29 17:27:37 -06:00
return;
}
ParticleStyle style = ParticleStyleManager.styleFromString(args[1]);
if (style == null) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.STYLE_INVALID, args[1]);
2018-09-29 17:27:37 -06:00
return;
} else if (!PermissionManager.hasStylePermission(pplayer.getPlayer(), style)) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.STYLE_NO_PERMISSION, args[1]);
2018-09-29 17:27:37 -06:00
return;
}
Material itemData = null;
Material blockData = null;
OrdinaryColor colorData = null;
NoteColor noteColorData = null;
if (args.length > 2) {
if (effect.hasProperty(ParticleProperty.COLORABLE)) {
if (effect == ParticleEffect.NOTE) {
if (args[2].equalsIgnoreCase("rainbow")) {
noteColorData = new NoteColor(99);
} else {
int note = -1;
try {
note = Integer.parseInt(args[2]);
} catch (Exception e) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.DATA_INVALID_NOTE);
2018-09-29 17:27:37 -06:00
return;
}
if (note < 0 || note > 23) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.DATA_INVALID_NOTE);
2018-09-29 17:27:37 -06:00
return;
}
noteColorData = new NoteColor(note);
}
} else {
if (args[2].equalsIgnoreCase("rainbow")) {
colorData = new OrdinaryColor(999, 999, 999);
} else {
int r = -1;
int g = -1;
int b = -1;
try {
r = Integer.parseInt(args[2]);
g = Integer.parseInt(args[3]);
b = Integer.parseInt(args[4]);
} catch (Exception e) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.DATA_INVALID_COLOR);
2018-09-29 17:27:37 -06:00
return;
}
if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.DATA_INVALID_COLOR);
2018-09-29 17:27:37 -06:00
return;
}
2018-09-29 17:27:37 -06:00
colorData = new OrdinaryColor(r, g, b);
}
}
} else if (effect.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
if (effect == ParticleEffect.BLOCK || effect == ParticleEffect.FALLING_DUST) {
try {
blockData = ParticleUtils.closestMatch(args[2]);
if (blockData == null) throw new Exception();
} catch (Exception e) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.DATA_INVALID_BLOCK);
2018-09-29 17:27:37 -06:00
return;
}
} else if (effect == ParticleEffect.ITEM) {
try {
itemData = ParticleUtils.closestMatch(args[2]);
if (itemData == null) throw new Exception();
} catch (Exception e) {
2018-10-01 22:23:05 -06:00
LangManager.sendMessage(pplayer, Lang.DATA_INVALID_ITEM);
2018-09-29 17:27:37 -06:00
return;
}
}
}
ParticleGroup group = pplayer.getActiveParticleGroup();
group.getParticles().add(new ParticlePair(pplayer.getUniqueId(), pplayer.getNextActiveParticleId(), effect, style, blockData, blockData, colorData, noteColorData));
DataManager.saveParticleGroup(pplayer.getUniqueId(), group);
2018-09-29 17:27:37 -06:00
}
}
public List<String> onTabComplete(PPlayer pplayer, String[] args) {
return null;
}
public String getName() {
return "add";
}
2018-09-29 17:27:37 -06:00
public Lang getDescription() {
2018-10-01 22:23:05 -06:00
return Lang.COMMAND_DESCRIPTION_ADD;
}
public String getArguments() {
return "<effect> <style> [data]";
}
public boolean requiresEffects() {
return true;
}
}