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("