mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-02-11 03:29:53 +00:00
Add '/pp fixed edit', fix <1.13 support with GUI
This commit is contained in:
parent
721f500d9b
commit
b13ad52486
9 changed files with 395 additions and 20 deletions
|
@ -41,6 +41,7 @@ public class FixedCommandModule implements CommandModule {
|
|||
|
||||
if (args.length == 0) { // General information on command
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_CREATE);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_EDIT);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_REMOVE);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_LIST);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_INFO);
|
||||
|
@ -59,6 +60,9 @@ public class FixedCommandModule implements CommandModule {
|
|||
case "create":
|
||||
handleCreate(pplayer, p, cmdArgs);
|
||||
return;
|
||||
case "edit":
|
||||
handleEdit(pplayer, p, cmdArgs);
|
||||
return;
|
||||
case "remove":
|
||||
handleRemove(pplayer, p, cmdArgs);
|
||||
return;
|
||||
|
@ -72,8 +76,9 @@ public class FixedCommandModule implements CommandModule {
|
|||
handleClear(pplayer, p, cmdArgs);
|
||||
return;
|
||||
default:
|
||||
LangManager.sendMessage(pplayer, Lang.FIXED_INVALID_COMMAND);
|
||||
LangManager.sendMessage(p, Lang.FIXED_INVALID_COMMAND);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_CREATE);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_EDIT);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_REMOVE);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_LIST);
|
||||
LangManager.sendMessage(p, Lang.COMMAND_DESCRIPTION_FIXED_INFO);
|
||||
|
@ -155,7 +160,7 @@ public class FixedCommandModule implements CommandModule {
|
|||
double distanceFromEffect = p.getLocation().distance(new Location(p.getWorld(), xPos, yPos, zPos));
|
||||
int maxCreationDistance = PermissionManager.getMaxFixedEffectCreationDistance();
|
||||
if (maxCreationDistance != 0 && distanceFromEffect > maxCreationDistance) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_CREATE_OUT_OF_RANGE, maxCreationDistance + "");
|
||||
LangManager.sendMessage(p, Lang.FIXED_CREATE_OUT_OF_RANGE, maxCreationDistance);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -274,6 +279,208 @@ public class FixedCommandModule implements CommandModule {
|
|||
DataManager.saveFixedEffect(fixedEffect);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the command /pp fixed edit
|
||||
*
|
||||
* @param pplayer The PPlayer
|
||||
* @param p The Player
|
||||
* @param args The command arguments
|
||||
*/
|
||||
private void handleEdit(PPlayer pplayer, Player p, String[] args) {
|
||||
if (args.length < 3) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_MISSING_ARGS);
|
||||
return;
|
||||
}
|
||||
|
||||
int id = -1;
|
||||
try {
|
||||
id = Integer.parseInt(args[0]);
|
||||
} catch (Exception ex) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_INVALID_ID);
|
||||
return;
|
||||
}
|
||||
|
||||
FixedParticleEffect fixedEffect = pplayer.getFixedEffectById(id);
|
||||
if (fixedEffect == null) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_INVALID_ID);
|
||||
return;
|
||||
}
|
||||
|
||||
String editType = args[1].toLowerCase();
|
||||
if (editType.equals("location")) {
|
||||
double xPos = -1, yPos = -1, zPos = -1;
|
||||
|
||||
if (args[2].equalsIgnoreCase("looking")) {
|
||||
Block targetBlock = p.getTargetBlock((Set<Material>)null, 8);
|
||||
int maxDistanceSqrd = 6 * 6;
|
||||
if (targetBlock.getLocation().distanceSquared(p.getLocation()) > maxDistanceSqrd) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_LOOKING_TOO_FAR);
|
||||
return;
|
||||
}
|
||||
|
||||
Location blockLocation = targetBlock.getLocation().clone().add(0.5, 0.5, 0.5); // Center of block
|
||||
|
||||
xPos = blockLocation.getX();
|
||||
yPos = blockLocation.getY();
|
||||
zPos = blockLocation.getZ();
|
||||
} else {
|
||||
try {
|
||||
if (args[2].startsWith("~")) {
|
||||
if (args[2].equals("~")) xPos = p.getLocation().getX();
|
||||
else xPos = p.getLocation().getX() + Double.parseDouble(args[2].substring(1));
|
||||
} else {
|
||||
xPos = Double.parseDouble(args[2]);
|
||||
}
|
||||
|
||||
if (args[3].startsWith("~")) {
|
||||
if (args[3].equals("~")) yPos = p.getLocation().getY() + 1;
|
||||
else yPos = p.getLocation().getY() + 1 + Double.parseDouble(args[3].substring(1));
|
||||
} else {
|
||||
yPos = Double.parseDouble(args[3]);
|
||||
}
|
||||
|
||||
if (args[4].startsWith("~")) {
|
||||
if (args[4].equals("~")) zPos = p.getLocation().getZ();
|
||||
else zPos = p.getLocation().getZ() + Double.parseDouble(args[4].substring(1));
|
||||
} else {
|
||||
zPos = Double.parseDouble(args[4]);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_INVALID_COORDS);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
double distanceFromEffect = p.getLocation().distance(new Location(p.getWorld(), xPos, yPos, zPos));
|
||||
int maxCreationDistance = PermissionManager.getMaxFixedEffectCreationDistance();
|
||||
if (maxCreationDistance != 0 && distanceFromEffect > maxCreationDistance) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_OUT_OF_RANGE, maxCreationDistance);
|
||||
return;
|
||||
}
|
||||
|
||||
fixedEffect.setCoordinates(xPos, yPos, zPos);
|
||||
} else if (editType.equals("effect")) {
|
||||
ParticleEffect effect = ParticleEffect.fromName(args[2]);
|
||||
if (effect == null) {
|
||||
LangManager.sendMessage(pplayer, Lang.FIXED_EDIT_EFFECT_INVALID, args[2]);
|
||||
return;
|
||||
} else if (!PermissionManager.hasEffectPermission(pplayer.getPlayer(), effect)) {
|
||||
LangManager.sendMessage(pplayer, Lang.FIXED_EDIT_EFFECT_NO_PERMISSION, effect.getName());
|
||||
return;
|
||||
}
|
||||
|
||||
fixedEffect.getParticlePair().setEffect(effect);
|
||||
} else if (editType.equals("style")) {
|
||||
ParticleStyle style = ParticleStyle.fromName(args[2]);
|
||||
if (style == null) {
|
||||
LangManager.sendMessage(pplayer, Lang.FIXED_EDIT_STYLE_INVALID, args[2]);
|
||||
return;
|
||||
} else if (!PermissionManager.hasStylePermission(pplayer.getPlayer(), style)) {
|
||||
LangManager.sendMessage(pplayer, Lang.FIXED_EDIT_STYLE_NO_PERMISSION, style.getName());
|
||||
return;
|
||||
}
|
||||
|
||||
fixedEffect.getParticlePair().setStyle(style);
|
||||
} else if (editType.equals("data")) {
|
||||
Material itemData = null;
|
||||
Material blockData = null;
|
||||
OrdinaryColor colorData = null;
|
||||
NoteColor noteColorData = null;
|
||||
|
||||
ParticleEffect effect = fixedEffect.getParticlePair().getEffect();
|
||||
if (effect.hasProperty(ParticleProperty.COLORABLE)) {
|
||||
if (effect == ParticleEffect.NOTE) {
|
||||
if (args[2].equalsIgnoreCase("rainbow")) {
|
||||
noteColorData = new NoteColor(99);
|
||||
} else if (args[2].equalsIgnoreCase("random")) {
|
||||
noteColorData = new NoteColor(98);
|
||||
} else {
|
||||
int note = -1;
|
||||
try {
|
||||
note = Integer.parseInt(args[2]);
|
||||
} catch (Exception e) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_DATA_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
if (note < 0 || note > 24) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_DATA_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
noteColorData = new NoteColor(note);
|
||||
}
|
||||
} else {
|
||||
if (args[2].equalsIgnoreCase("rainbow")) {
|
||||
colorData = new OrdinaryColor(999, 999, 999);
|
||||
} else if (args[2].equalsIgnoreCase("random")) {
|
||||
colorData = new OrdinaryColor(998, 998, 998);
|
||||
} 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) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_DATA_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_DATA_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
colorData = new OrdinaryColor(r, g, b);
|
||||
}
|
||||
}
|
||||
} else if (effect.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
|
||||
if (effect == ParticleEffect.BLOCK || effect == ParticleEffect.FALLING_DUST) {
|
||||
Material material = null;
|
||||
try {
|
||||
material = ParticleUtils.closestMatch(args[2]);
|
||||
if (material == null) material = Material.matchMaterial(args[2]);
|
||||
if (material == null || !material.isBlock()) throw new Exception();
|
||||
} catch (Exception e) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_DATA_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
blockData = material;
|
||||
} else if (effect == ParticleEffect.ITEM) {
|
||||
Material material = null;
|
||||
try {
|
||||
material = ParticleUtils.closestMatch(args[2]);
|
||||
if (material == null) material = Material.matchMaterial(args[2]);
|
||||
if (material == null || material.isBlock()) throw new Exception();
|
||||
} catch (Exception e) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_DATA_ERROR);
|
||||
return;
|
||||
}
|
||||
|
||||
itemData = material;
|
||||
}
|
||||
} else {
|
||||
LangManager.sendMessage(pplayer, Lang.FIXED_EDIT_DATA_NONE);
|
||||
return;
|
||||
}
|
||||
|
||||
fixedEffect.getParticlePair().setColor(colorData);
|
||||
fixedEffect.getParticlePair().setNoteColor(noteColorData);
|
||||
fixedEffect.getParticlePair().setItemMaterial(itemData);
|
||||
fixedEffect.getParticlePair().setBlockMaterial(blockData);
|
||||
} else {
|
||||
LangManager.sendMessage(p, Lang.FIXED_EDIT_INVALID_PROPERTY);
|
||||
return;
|
||||
}
|
||||
|
||||
DataManager.updateFixedEffect(fixedEffect);
|
||||
LangManager.sendMessage(pplayer, Lang.FIXED_EDIT_SUCCESS, editType, id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handles the command /pp fixed remove
|
||||
*
|
||||
|
@ -297,9 +504,9 @@ public class FixedCommandModule implements CommandModule {
|
|||
|
||||
if (pplayer.getFixedEffectById(id) != null) {
|
||||
DataManager.removeFixedEffect(pplayer.getUniqueId(), id);
|
||||
LangManager.sendMessage(p, Lang.FIXED_REMOVE_SUCCESS, id + "");
|
||||
LangManager.sendMessage(p, Lang.FIXED_REMOVE_SUCCESS, id);
|
||||
} else {
|
||||
LangManager.sendMessage(p, Lang.FIXED_REMOVE_INVALID, id + "");
|
||||
LangManager.sendMessage(p, Lang.FIXED_REMOVE_INVALID, id);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -353,7 +560,7 @@ public class FixedCommandModule implements CommandModule {
|
|||
|
||||
FixedParticleEffect fixedEffect = pplayer.getFixedEffectById(id);
|
||||
if (fixedEffect == null) {
|
||||
LangManager.sendMessage(p, Lang.FIXED_INFO_INVALID, id + "");
|
||||
LangManager.sendMessage(p, Lang.FIXED_INFO_INVALID, id);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -362,11 +569,11 @@ public class FixedCommandModule implements CommandModule {
|
|||
DecimalFormat df = new DecimalFormat("0.##"); // Decimal formatter so the coords aren't super long
|
||||
LangManager.sendMessage(p, // @formatter:off
|
||||
Lang.FIXED_INFO_SUCCESS,
|
||||
fixedEffect.getId() + "",
|
||||
fixedEffect.getId(),
|
||||
fixedEffect.getLocation().getWorld().getName(),
|
||||
df.format(fixedEffect.getLocation().getX()) + "",
|
||||
df.format(fixedEffect.getLocation().getY()) + "",
|
||||
df.format(fixedEffect.getLocation().getZ()) + "",
|
||||
df.format(fixedEffect.getLocation().getX()),
|
||||
df.format(fixedEffect.getLocation().getY()),
|
||||
df.format(fixedEffect.getLocation().getZ()),
|
||||
particle.getEffect().getName(),
|
||||
particle.getStyle().getName(),
|
||||
particle.getDataString()
|
||||
|
@ -409,13 +616,13 @@ public class FixedCommandModule implements CommandModule {
|
|||
for (FixedParticleEffect fixedEffect : fixedEffectsToRemove)
|
||||
DataManager.removeFixedEffect(fixedEffect.getOwnerUniqueId(), fixedEffect.getId());
|
||||
|
||||
LangManager.sendMessage(p, Lang.FIXED_CLEAR_SUCCESS, fixedEffectsToRemove.size() + "", radius + "");
|
||||
LangManager.sendMessage(p, Lang.FIXED_CLEAR_SUCCESS, fixedEffectsToRemove.size(), radius);
|
||||
}
|
||||
|
||||
public List<String> onTabComplete(PPlayer pplayer, String[] args) {
|
||||
Player p = pplayer.getPlayer();
|
||||
List<String> matches = new ArrayList<String>();
|
||||
String[] subCommands = new String[] { "create", "remove", "list", "info", "clear" };
|
||||
String[] subCommands = new String[] { "create", "edit", "remove", "list", "info", "clear" };
|
||||
|
||||
if (args.length <= 1) {
|
||||
List<String> possibleCmds = new ArrayList<String>(Arrays.asList(subCommands));
|
||||
|
@ -487,6 +694,73 @@ public class FixedCommandModule implements CommandModule {
|
|||
}
|
||||
}
|
||||
break;
|
||||
case "edit":
|
||||
if (args.length == 2) {
|
||||
StringUtil.copyPartialMatches(args[1], pplayer.getFixedEffectIds().stream().map((x) -> String.valueOf(x)).collect(Collectors.toList()), matches);
|
||||
} else if (args.length == 3) {
|
||||
String[] validProperties = new String[] { "location", "effect", "style", "data" };
|
||||
StringUtil.copyPartialMatches(args[2], Arrays.asList(validProperties), matches);
|
||||
} else if (args.length > 3) {
|
||||
String property = args[2].toLowerCase();
|
||||
if (property.equals("location")) {
|
||||
List<String> possibleValues = new ArrayList<String>();
|
||||
if (args.length == 6 && !args[3].equalsIgnoreCase("looking")) {
|
||||
possibleValues.add("~");
|
||||
}
|
||||
if (args.length == 5 && !args[3].equalsIgnoreCase("looking")) {
|
||||
possibleValues.add("~ ~");
|
||||
}
|
||||
if (args.length == 4) {
|
||||
possibleValues.add("~ ~ ~");
|
||||
possibleValues.add("looking");
|
||||
}
|
||||
StringUtil.copyPartialMatches(args[args.length - 1], possibleValues, matches);
|
||||
} else if (property.equals("effect") && args.length == 4) {
|
||||
StringUtil.copyPartialMatches(args[3], PermissionManager.getEffectNamesUserHasPermissionFor(p), matches);
|
||||
} else if (property.equals("style") && args.length == 4) {
|
||||
StringUtil.copyPartialMatches(args[3], PermissionManager.getStyleNamesUserHasPermissionFor(p), matches);
|
||||
} else if (property.equals("data")) {
|
||||
int id = -1;
|
||||
try {
|
||||
id = Integer.parseInt(args[1]);
|
||||
} catch (Exception e) { }
|
||||
|
||||
FixedParticleEffect fixedEffect = pplayer.getFixedEffectById(id);
|
||||
if (fixedEffect != null) {
|
||||
ParticleEffect effect = fixedEffect.getParticlePair().getEffect();
|
||||
if (effect.hasProperty(ParticleProperty.COLORABLE)) {
|
||||
List<String> possibleValues = new ArrayList<String>();
|
||||
if (effect == ParticleEffect.NOTE) { // Note data
|
||||
if (args.length == 4) {
|
||||
possibleValues.add("<0-24>");
|
||||
possibleValues.add("rainbow");
|
||||
possibleValues.add("random");
|
||||
}
|
||||
} else { // Color data
|
||||
if (args.length == 6 && !args[3].equalsIgnoreCase("rainbow") && !args[3].equalsIgnoreCase("random")) {
|
||||
possibleValues.add("<0-255>");
|
||||
}
|
||||
if (args.length == 5 && !args[3].equalsIgnoreCase("rainbow") && !args[3].equalsIgnoreCase("random")) {
|
||||
possibleValues.add("<0-255> <0-255>");
|
||||
}
|
||||
if (args.length == 4) {
|
||||
possibleValues.add("<0-255> <0-255> <0-255>");
|
||||
possibleValues.add("rainbow");
|
||||
possibleValues.add("random");
|
||||
}
|
||||
}
|
||||
StringUtil.copyPartialMatches(args[args.length - 1], possibleValues, matches);
|
||||
} else if (args.length == 4 && effect.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
|
||||
if (effect == ParticleEffect.BLOCK || effect == ParticleEffect.FALLING_DUST) { // Block material
|
||||
matches = StringUtil.copyPartialMatches(args[3], ParticleUtils.getAllBlockMaterials(), matches);
|
||||
} else if (effect == ParticleEffect.ITEM) { // Item material
|
||||
matches = StringUtil.copyPartialMatches(args[3], ParticleUtils.getAllItemMaterials(), matches);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case "remove":
|
||||
StringUtil.copyPartialMatches(args[1], pplayer.getFixedEffectIds().stream().map((x) -> String.valueOf(x)).collect(Collectors.toList()), matches);
|
||||
break;
|
||||
|
|
|
@ -36,7 +36,7 @@ public abstract class GuiInventory {
|
|||
if (this.material != null) { // Use 1.13 materials
|
||||
borderIcon = new ItemStack(this.material, 1);
|
||||
} else { // Use < 1.13 data values
|
||||
borderIcon = new ItemStack(Material.GLASS_PANE, 1, this.data);
|
||||
borderIcon = new ItemStack(ParticleUtils.closestMatch("THIN_GLASS"), 1, this.data);
|
||||
}
|
||||
|
||||
ItemMeta meta = borderIcon.getItemMeta();
|
||||
|
|
|
@ -345,6 +345,52 @@ public class DataManager {
|
|||
pplayer.addFixedEffect(fixedEffect);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates a fixed effect's particle values
|
||||
*
|
||||
* @param fixedEffect The fixed effect to update
|
||||
*/
|
||||
public static void updateFixedEffect(FixedParticleEffect fixedEffect) {
|
||||
async(() -> {
|
||||
PlayerParticles.getDBConnector().connect((connection) -> {
|
||||
// Update fixed effect
|
||||
String fixedEffectQuery = "UPDATE pp_fixed SET xPos = ?, yPos = ?, zPos = ? WHERE owner_uuid = ? AND id = ?";
|
||||
try (PreparedStatement statement = connection.prepareStatement(fixedEffectQuery)) {
|
||||
statement.setDouble(1, fixedEffect.getLocation().getX());
|
||||
statement.setDouble(2, fixedEffect.getLocation().getY());
|
||||
statement.setDouble(3, fixedEffect.getLocation().getZ());
|
||||
statement.setString(4, fixedEffect.getOwnerUniqueId().toString());
|
||||
statement.setInt(5, fixedEffect.getId());
|
||||
statement.executeUpdate();
|
||||
}
|
||||
|
||||
// Update particle
|
||||
String particleUpdateQuery = "UPDATE pp_particle " +
|
||||
"SET effect = ?, style = ?, item_material = ?, block_material = ?, note = ?, r = ?, g = ?, b = ? " +
|
||||
"WHERE uuid = (SELECT particle_uuid FROM pp_fixed WHERE owner_uuid = ? AND id = ?)";
|
||||
try (PreparedStatement statement = connection.prepareStatement(particleUpdateQuery)) {
|
||||
ParticlePair particle = fixedEffect.getParticlePair();
|
||||
statement.setString(1, particle.getEffect().getName());
|
||||
statement.setString(2, particle.getStyle().getName());
|
||||
statement.setString(3, particle.getItemMaterial().name());
|
||||
statement.setString(4, particle.getBlockMaterial().name());
|
||||
statement.setInt(5, particle.getNoteColor().getNote());
|
||||
statement.setInt(6, particle.getColor().getRed());
|
||||
statement.setInt(7, particle.getColor().getGreen());
|
||||
statement.setInt(8, particle.getColor().getBlue());
|
||||
statement.setString(9, fixedEffect.getOwnerUniqueId().toString());
|
||||
statement.setInt(10, fixedEffect.getId());
|
||||
statement.executeUpdate();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
getPPlayer(fixedEffect.getOwnerUniqueId(), (pplayer) -> {
|
||||
pplayer.removeFixedEffect(fixedEffect.getId());
|
||||
pplayer.addFixedEffect(fixedEffect);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Deletes a fixed effect from save data
|
||||
|
|
|
@ -49,6 +49,7 @@ public class LangManager {
|
|||
|
||||
// Sub-Command Usage
|
||||
COMMAND_DESCRIPTION_FIXED_CREATE,
|
||||
COMMAND_DESCRIPTION_FIXED_EDIT,
|
||||
COMMAND_DESCRIPTION_FIXED_REMOVE,
|
||||
COMMAND_DESCRIPTION_FIXED_LIST,
|
||||
COMMAND_DESCRIPTION_FIXED_INFO,
|
||||
|
@ -159,20 +160,40 @@ public class LangManager {
|
|||
FIXED_CREATE_STYLE_NON_FIXABLE,
|
||||
FIXED_CREATE_DATA_ERROR,
|
||||
FIXED_CREATE_SUCCESS,
|
||||
|
||||
FIXED_EDIT_MISSING_ARGS,
|
||||
FIXED_EDIT_INVALID_ID,
|
||||
FIXED_EDIT_INVALID_PROPERTY,
|
||||
FIXED_EDIT_INVALID_COORDS,
|
||||
FIXED_EDIT_OUT_OF_RANGE,
|
||||
FIXED_EDIT_LOOKING_TOO_FAR,
|
||||
FIXED_EDIT_EFFECT_INVALID,
|
||||
FIXED_EDIT_EFFECT_NO_PERMISSION,
|
||||
FIXED_EDIT_STYLE_INVALID,
|
||||
FIXED_EDIT_STYLE_NO_PERMISSION,
|
||||
FIXED_EDIT_STYLE_NON_FIXABLE,
|
||||
FIXED_EDIT_DATA_ERROR,
|
||||
FIXED_EDIT_DATA_NONE,
|
||||
FIXED_EDIT_SUCCESS,
|
||||
|
||||
FIXED_REMOVE_INVALID,
|
||||
FIXED_REMOVE_NO_ARGS,
|
||||
FIXED_REMOVE_ARGS_INVALID,
|
||||
FIXED_REMOVE_SUCCESS,
|
||||
|
||||
FIXED_LIST_NONE,
|
||||
FIXED_LIST_SUCCESS,
|
||||
|
||||
FIXED_INFO_INVALID,
|
||||
FIXED_INFO_NO_ARGS,
|
||||
FIXED_INFO_INVALID_ARGS,
|
||||
FIXED_INFO_SUCCESS,
|
||||
|
||||
FIXED_CLEAR_NO_PERMISSION,
|
||||
FIXED_CLEAR_NO_ARGS,
|
||||
FIXED_CLEAR_INVALID_ARGS,
|
||||
FIXED_CLEAR_SUCCESS,
|
||||
|
||||
FIXED_NO_PERMISSION,
|
||||
FIXED_MAX_REACHED,
|
||||
FIXED_INVALID_COMMAND,
|
||||
|
|
|
@ -88,5 +88,18 @@ public class FixedParticleEffect {
|
|||
public Location getLocation() {
|
||||
return this.location.clone();
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates the coordinates of the FixedParticleEffect
|
||||
*
|
||||
* @param x The new X coordinate
|
||||
* @param y The new Y coordinate
|
||||
* @param z The new Z coordinate
|
||||
*/
|
||||
public void setCoordinates(double x, double y, double z) {
|
||||
this.location.setX(x);
|
||||
this.location.setY(y);
|
||||
this.location.setZ(z);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -539,7 +539,7 @@ public enum ParticleEffect {
|
|||
*/
|
||||
@Override
|
||||
public float getValueX() {
|
||||
return (float) note / 24F;
|
||||
return (float) this.note / 24F;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -196,9 +196,9 @@ public class ParticlePair {
|
|||
public ParticleColor getSpawnColor() {
|
||||
if (this.effect.hasProperty(ParticleProperty.COLORABLE)) {
|
||||
if (this.effect == ParticleEffect.NOTE) {
|
||||
if (this.noteColor.getValueX() * 24 == 99) {
|
||||
if (this.noteColor.getNote() == 99) {
|
||||
return ParticleManager.getRainbowNoteParticleColor();
|
||||
} else if (this.noteColor.getValueX() * 24 == 98) {
|
||||
} else if (this.noteColor.getNote() == 98) {
|
||||
return ParticleManager.getRandomNoteParticleColor();
|
||||
}
|
||||
return this.noteColor;
|
||||
|
@ -243,12 +243,12 @@ public class ParticlePair {
|
|||
return this.itemMaterial.toString().toLowerCase();
|
||||
} else if (this.effect.hasProperty(ParticleProperty.COLORABLE)) {
|
||||
if (this.effect == ParticleEffect.NOTE) {
|
||||
if (this.noteColor.getValueX() * 24 == 99) {
|
||||
if (this.noteColor.getNote() == 99) {
|
||||
return LangManager.getText(Lang.RAINBOW);
|
||||
} else if ((int)(this.noteColor.getValueX() * 24) == 98) {
|
||||
} else if (this.noteColor.getNote() == 98) {
|
||||
return LangManager.getText(Lang.RANDOM);
|
||||
}
|
||||
return LangManager.getText(Lang.GUI_SELECT_DATA_NOTE, (int) (this.noteColor.getValueX() * 24));
|
||||
return LangManager.getText(Lang.GUI_SELECT_DATA_NOTE, this.noteColor.getNote());
|
||||
} else {
|
||||
if (this.color.getRed() == 999 && this.color.getGreen() == 999 && this.color.getBlue() == 999) {
|
||||
return LangManager.getText(Lang.RAINBOW);
|
||||
|
|
|
@ -12,7 +12,7 @@ import com.esophose.playerparticles.styles.api.ParticleStyle;
|
|||
|
||||
public class ParticleStyleInvocation implements ParticleStyle {
|
||||
|
||||
private int points = 5;
|
||||
private int points = 6;
|
||||
private double radius = 3.5;
|
||||
private double step = 0;
|
||||
private int circleStep = 0;
|
||||
|
|
|
@ -35,6 +35,7 @@ command-description-worlds: 'Find out what worlds particles are disabled in'
|
|||
|
||||
# Sub-Command Usage
|
||||
command-description-fixed-create: '&e/pp fixed create <<x> <y> <z>|<looking>> <effect> <style> [data] - Creates a new fixed effect'
|
||||
command-description-fixed-edit: '&e/pp fixed edit <id> <effect|style|data> <args> - Edit part of a fixed effect by its ID'
|
||||
command-description-fixed-remove: '&e/pp fixed remove <ID> - Removes a fixed effect by its ID'
|
||||
command-description-fixed-list: '&e/pp fixed list - Lists all IDs of your fixed effects'
|
||||
command-description-fixed-info: '&e/pp fixed info <ID> - Gets info on one of your fixed effects'
|
||||
|
@ -142,23 +143,43 @@ fixed-create-effect-invalid: '&cUnable to create fixed effect, an effect with th
|
|||
fixed-create-effect-no-permission: '&cUnable to create fixed effect, you do not have permission to use the effect &b{0}&c!'
|
||||
fixed-create-style-invalid: '&cUnable to create fixed effect, a style with the name &b{0} &cdoes not exist!'
|
||||
fixed-create-style-no-permission: '&cUnable to create fixed effect, you do not have permission to use the style &b{0}&c!'
|
||||
fixed-create-style-non-fixable: '&cThe style &b{0} &ccan not be used in fixed effects!'
|
||||
fixed-create-style-non-fixable: '&cUnable to create fixed effect, the style &b{0} &ccan not be used in fixed effects!'
|
||||
fixed-create-data-error: '&cUnable to create fixed effect, the data provided is not correct! Use &b/pp data <effect> &cto find the correct data format!'
|
||||
fixed-create-success: '&aYour fixed effect has been created!'
|
||||
|
||||
fixed-edit-missing-args: '&cUnable to edit fixed effect, you are missing some arguments!'
|
||||
fixed-edit-invalid-id: '&cUnable to edit fixed effect, the ID specified is invalid or does not exist!'
|
||||
fixed-edit-invalid-property: '&cUnable to edit fixed effect, an invalid property was specified! Only &blocation&c, &beffect&c, &bstyle&c, and &bdata &care valid.'
|
||||
fixed-edit-invalid-coords: '&cUnable to edit fixed effect, one or more coordinates you entered is invalid!'
|
||||
fixed-edit-out-of-range: '&cUnable to edit fixed effect, you must be within &b{0} &cblocks of your desired location!'
|
||||
fixed-edit-looking-too-far: '&cUnable to edit fixed effect, you are standing too far away from the block you are looking at!'
|
||||
fixed-edit-effect-invalid: '&cUnable to edit fixed effect, an effect with the name &b{0} &cdoes not exist!'
|
||||
fixed-edit-effect-no-permission: '&cUnable to edit fixed effect, you do not have permission to use the effect &b{0}&c!'
|
||||
fixed-edit-style-invalid: '&cUnable to edit fixed effect, a style with the name &b{0} &cdoes not exist!'
|
||||
fixed-edit-style-no-permission: '&cUnable to edit fixed effect, you do not have permission to use the style &b{0}&c!'
|
||||
fixed-edit-style-non-fixable: '&cUnable to edit fixed effect, the style &b{0} &ccan not be used in fixed effects!'
|
||||
fixed-edit-data-error: '&cUnable to edit fixed effect, the data provided is not correct! Use &b/pp data <effect> &cto find the correct data format!'
|
||||
fixed-edit-data-none: '&cUnable to edit fixed effect, the effect does not require any data!'
|
||||
fixed-edit-success: '&aUpdated the &b{0} of the fixed effect with an ID of &b{0}!'
|
||||
|
||||
fixed-remove-invalid: '&cUnable to remove fixed effect, you do not have a fixed effect with the ID of &b{0}&c!'
|
||||
fixed-remove-no-args: '&cYou did not specify an ID to remove!'
|
||||
fixed-remove-args-invalid: '&cUnable to remove, the ID specified must be a number!'
|
||||
fixed-remove-success: '&aYour fixed effect with the ID &b{0} &ahas been removed!'
|
||||
|
||||
fixed-list-none: '&eYou do not have any fixed effects!'
|
||||
fixed-list-success: '&eYou have fixed effects with these IDs: &b{0}'
|
||||
|
||||
fixed-info-invalid: '&cUnable to get info, you do not have a fixed effect with the ID of &b{0}&c!'
|
||||
fixed-info-no-args: '&cYou did not specify an ID to display info for!'
|
||||
fixed-info-invalid-args: '&cUnable to get info, the ID specified must be a number!'
|
||||
fixed-info-success: '&eID: &b{0} &eWorld: &b{1} &eX: &b{2} &eY: &b{3} &eZ: &b{4} &eEffect: &b{5} &eStyle: &b{6} &eData: &b{7}'
|
||||
|
||||
fixed-clear-no-permission: '&cYou do not have permission to clear nearby fixed effects!'
|
||||
fixed-clear-no-args: '&cYou did not provide a radius to clear fixed effects for!'
|
||||
fixed-clear-invalid-args: '&cThe radius you provided is invalid, it must be a positive whole number!'
|
||||
fixed-clear-success: '&aCleared &b{0} &afixed effects within &b{1} &ablocks of your location!'
|
||||
|
||||
fixed-no-permission: '&cYou do not have permission to use fixed effects!'
|
||||
fixed-max-reached: '&cYou have reached the maximum allowed fixed effects!'
|
||||
fixed-invalid-command: '&cInvalid sub-command for &b/pp fixed&c!'
|
||||
|
|
Loading…
Reference in a new issue