diff --git a/pom.xml b/pom.xml
index b00847f..822af24 100644
--- a/pom.xml
+++ b/pom.xml
@@ -53,7 +53,7 @@
- C:\Users\Esophose\Desktop\Spigot 1.13.Dev Server\plugins\update\PlayerParticles v5.2.jar
+ C:\Users\Esophose\Desktop\Spigot 1.13 Dev Server\plugins\update\PlayerParticles v5.2.jar
diff --git a/src/com/esophose/playerparticles/PPlayer.java b/src/com/esophose/playerparticles/PPlayer.java
index 98b4c21..9fec73b 100644
--- a/src/com/esophose/playerparticles/PPlayer.java
+++ b/src/com/esophose/playerparticles/PPlayer.java
@@ -170,7 +170,7 @@ public class PPlayer {
* @param itemData The player's new item data
*/
public void setItemData(ItemData itemData) {
- if (itemData == null) itemData = new ItemData(ParticleUtils.closestMatchWithFallback("IRON_SHOVEL", "IRON_SPADE"), (byte)0);
+ if (itemData == null) itemData = new ItemData(ParticleUtils.closestMatchWithFallback("IRON_SHOVEL", "IRON_SPADE"));
this.particleItemData = itemData;
}
@@ -180,7 +180,7 @@ public class PPlayer {
* @param blockData The player's new block data
*/
public void setBlockData(BlockData blockData) {
- if (blockData == null) blockData = new BlockData(Material.STONE, (byte) 0);
+ if (blockData == null) blockData = new BlockData(Material.STONE);
this.particleBlockData = blockData;
}
@@ -210,11 +210,11 @@ public class PPlayer {
* @return The ParticleData the current particle effect requires
*/
public ParticleData getParticleSpawnData() {
- if (this.particleEffect.hasProperty(ParticleProperty.REQUIRES_DATA)) {
- if (this.particleEffect == ParticleEffect.ITEM_CRACK) {
+ if (this.particleEffect.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
+ if (this.particleEffect == ParticleEffect.ITEM) {
return this.particleItemData;
} else {
- return particleBlockData;
+ return this.particleBlockData;
}
}
return null;
@@ -249,10 +249,10 @@ public class PPlayer {
* @return The particle data in a human-readable string
*/
public String getParticleDataString() {
- if (this.particleEffect == ParticleEffect.BLOCK_CRACK || this.particleEffect == ParticleEffect.BLOCK_DUST || this.particleEffect == ParticleEffect.FALLING_DUST) {
- return particleBlockData.getMaterial().toString().toLowerCase() + ":" + particleBlockData.getData();
- } else if (this.particleEffect == ParticleEffect.ITEM_CRACK) {
- return particleItemData.getMaterial().toString().toLowerCase() + ":" + particleItemData.getData();
+ if (this.particleEffect == ParticleEffect.BLOCK || this.particleEffect == ParticleEffect.FALLING_DUST) {
+ return particleBlockData.getMaterial().toString().toLowerCase();
+ } else if (this.particleEffect == ParticleEffect.ITEM) {
+ return particleItemData.getMaterial().toString().toLowerCase();
} else if (this.particleEffect.hasProperty(ParticleProperty.COLORABLE)) {
if (this.particleEffect == ParticleEffect.NOTE) {
if (this.particleNoteColorData.getValueX() * 24 == 99) {
@@ -280,8 +280,8 @@ public class PPlayer {
public static PPlayer getNewPPlayer(UUID playerUUID) {
ParticleEffect particleEffect = ParticleEffect.NONE;
ParticleStyle particleStyle = DefaultStyles.NONE;
- ItemData particleItemData = new ItemData(ParticleUtils.closestMatchWithFallback("IRON_SHOVEL", "IRON_SPADE"), (byte) 0);
- BlockData particleBlockData = new BlockData(Material.STONE, (byte) 0);
+ ItemData particleItemData = new ItemData(ParticleUtils.closestMatchWithFallback("IRON_SHOVEL", "IRON_SPADE"));
+ BlockData particleBlockData = new BlockData(Material.STONE);
OrdinaryColor particleColorData = new OrdinaryColor(0, 0, 0);
NoteColor particleNoteColorData = new NoteColor(0);
diff --git a/src/com/esophose/playerparticles/ParticleCommandCompleter.java b/src/com/esophose/playerparticles/ParticleCommandCompleter.java
index b36eb4e..e532391 100644
--- a/src/com/esophose/playerparticles/ParticleCommandCompleter.java
+++ b/src/com/esophose/playerparticles/ParticleCommandCompleter.java
@@ -12,18 +12,26 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabCompleter;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;
+import com.esophose.playerparticles.manager.MessageManager.MessageType;
+import com.esophose.playerparticles.manager.PPlayerDataManager;
import com.esophose.playerparticles.manager.PermissionManager;
+import com.esophose.playerparticles.particles.ParticleEffect;
+import com.esophose.playerparticles.particles.ParticleEffect.ParticleProperty;
+import com.esophose.playerparticles.util.ParticleUtils;
public class ParticleCommandCompleter implements TabCompleter {
private static final String[] COMMANDS = { "help", "gui", "effect", "effects", "style", "styles", "data", "fixed", "reset", "worlds", "version" };
private static final String[] FIXED_COMMANDS = { "create", "remove", "list", "info" };
+ private static final List BLOCK_MATERIALS = ParticleUtils.getAllBlockMaterials();
+ private static final List ITEM_MATERIALS = ParticleUtils.getAllItemMaterials();
/**
* Activated when a user pushes tab in chat prefixed with /pp
@@ -35,20 +43,49 @@ public class ParticleCommandCompleter implements TabCompleter {
* @return A list of commands available to the sender
*/
public List onTabComplete(CommandSender sender, Command cmd, String alias, String[] args) {
+ if (!(sender instanceof Player)) return new ArrayList();
+
List completions = new ArrayList();
if (cmd.getName().equalsIgnoreCase("pp")) {
if (args.length > 1) {
- if (args[0].equalsIgnoreCase("effect")) {
+ if (args[0].equalsIgnoreCase("effect") && args.length == 2) {
List commands = PermissionManager.getEffectsUserHasPermissionFor((Player) sender);
StringUtil.copyPartialMatches(args[1], commands, completions);
- return completions;
- } else if (args[0].equalsIgnoreCase("style")) {
+ } else if (args[0].equalsIgnoreCase("style") && args.length == 2) {
List commands = PermissionManager.getStylesUserHasPermissionFor((Player) sender);
StringUtil.copyPartialMatches(args[1], commands, completions);
- return completions;
- } else if (args[0].equalsIgnoreCase("fixed")) {
- List commands = Arrays.asList(FIXED_COMMANDS);
- StringUtil.copyPartialMatches(args[1], commands, completions);
+ } else if (args[0].equalsIgnoreCase("fixed") && args.length > 1) {
+ if (args.length == 2) {
+ List commands = Arrays.asList(FIXED_COMMANDS);
+ StringUtil.copyPartialMatches(args[1], commands, completions);
+ } else if (args[1].equalsIgnoreCase("create")) {
+ completions.add("