mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-02-11 11:40:21 +00:00
Update to v4.1
Update to v4.1 Added additional documentation
This commit is contained in:
parent
bf485fcfcc
commit
cd76219ac7
20 changed files with 754 additions and 247 deletions
|
@ -1,3 +1,11 @@
|
|||
/**
|
||||
* Copyright Esophose 2016
|
||||
* While using any of the code provided by this plugin
|
||||
* you must not claim it as your own. This plugin may
|
||||
* be modified and installed on a server, but may not
|
||||
* be distributed to any person by any means.
|
||||
*/
|
||||
|
||||
package com.esophose.playerparticles;
|
||||
|
||||
import java.util.UUID;
|
||||
|
@ -17,16 +25,36 @@ import com.esophose.playerparticles.styles.api.ParticleStyle;
|
|||
|
||||
public class PPlayer {
|
||||
|
||||
/**
|
||||
* The UUID of the player
|
||||
*/
|
||||
private final UUID playerUUID;
|
||||
|
||||
/**
|
||||
* The effect and style the player is using
|
||||
*/
|
||||
private ParticleEffect particleEffect;
|
||||
private ParticleStyle particleStyle;
|
||||
|
||||
/**
|
||||
* All data used to display custom particles
|
||||
*/
|
||||
private ItemData particleItemData;
|
||||
private BlockData particleBlockData;
|
||||
private OrdinaryColor particleColorData;
|
||||
private NoteColor particleNoteColorData;
|
||||
|
||||
/**
|
||||
* Constructs a new PPlayer
|
||||
*
|
||||
* @param uuid The player UUID
|
||||
* @param effect The player's effect
|
||||
* @param style The player's style
|
||||
* @param itemData The player's item data
|
||||
* @param blockData The player's block data
|
||||
* @param colorData The player's color data
|
||||
* @param noteColorData The player's note color data
|
||||
*/
|
||||
public PPlayer(UUID uuid, ParticleEffect effect, ParticleStyle style, ItemData itemData, BlockData blockData, OrdinaryColor colorData, NoteColor noteColorData) {
|
||||
this.playerUUID = uuid;
|
||||
this.particleEffect = effect;
|
||||
|
@ -37,58 +65,128 @@ public class PPlayer {
|
|||
this.particleNoteColorData = noteColorData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's UUID
|
||||
*
|
||||
* @return The player's UUID
|
||||
*/
|
||||
public UUID getUniqueId() {
|
||||
return this.playerUUID;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's particle effect
|
||||
*
|
||||
* @return The player's particle effect
|
||||
*/
|
||||
public ParticleEffect getParticleEffect() {
|
||||
return this.particleEffect;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's particle style
|
||||
*
|
||||
* @return The player's particle style
|
||||
*/
|
||||
public ParticleStyle getParticleStyle() {
|
||||
return this.particleStyle;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's item data
|
||||
*
|
||||
* @return The player's item data
|
||||
*/
|
||||
public ItemData getItemData() {
|
||||
return this.particleItemData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's block data
|
||||
*
|
||||
* @return The player's block data
|
||||
*/
|
||||
public BlockData getBlockData() {
|
||||
return this.particleBlockData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's color data
|
||||
*
|
||||
* @return The player's color data
|
||||
*/
|
||||
public OrdinaryColor getColorData() {
|
||||
return this.particleColorData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the player's note color data
|
||||
*
|
||||
* @return The player's note color data
|
||||
*/
|
||||
public NoteColor getNoteColorData() {
|
||||
return this.particleNoteColorData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's particle effect
|
||||
*
|
||||
* @param effect The player's new particle effect
|
||||
*/
|
||||
public void setParticleEffect(ParticleEffect effect) {
|
||||
this.particleEffect = effect;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's particle style
|
||||
*
|
||||
* @param effect The player's new particle style
|
||||
*/
|
||||
public void setParticleStyle(ParticleStyle style) {
|
||||
this.particleStyle = style;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's item data
|
||||
*
|
||||
* @param effect The player's new item data
|
||||
*/
|
||||
public void setItemData(ItemData itemData) {
|
||||
this.particleItemData = itemData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's block data
|
||||
*
|
||||
* @param effect The player's new block data
|
||||
*/
|
||||
public void setBlockData(BlockData blockData) {
|
||||
this.particleBlockData = blockData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's color data
|
||||
*
|
||||
* @param effect The player's new color data
|
||||
*/
|
||||
public void setColorData(OrdinaryColor colorData) {
|
||||
this.particleColorData = colorData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's note color data
|
||||
*
|
||||
* @param effect The player's new note color data
|
||||
*/
|
||||
public void setNoteColorData(NoteColor noteColorData) {
|
||||
this.particleNoteColorData = noteColorData;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the data the current particle effect will spawn with
|
||||
*
|
||||
* @return The ParticleData the current particle effect requires
|
||||
*/
|
||||
public ParticleData getParticleSpawnData() {
|
||||
if (particleEffect.hasProperty(ParticleProperty.REQUIRES_DATA)) {
|
||||
if (particleEffect == ParticleEffect.BLOCK_CRACK || particleEffect == ParticleEffect.BLOCK_DUST || particleEffect == ParticleEffect.FALLING_DUST) {
|
||||
|
@ -100,6 +198,11 @@ public class PPlayer {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the color the current particle effect will spawn with
|
||||
*
|
||||
* @return Gets the ParticleColor the current particle effect will spawn with
|
||||
*/
|
||||
public ParticleColor getParticleSpawnColor() {
|
||||
if (particleEffect.hasProperty(ParticleProperty.COLORABLE)) {
|
||||
if (particleEffect == ParticleEffect.NOTE) {
|
||||
|
@ -109,6 +212,13 @@ public class PPlayer {
|
|||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a default PPlayer
|
||||
* Used for when a new PPlayer is being created
|
||||
*
|
||||
* @param playerUUID The player's UUID
|
||||
* @return A default PPlayer
|
||||
*/
|
||||
public static PPlayer getNewPPlayer(UUID playerUUID) {
|
||||
ParticleEffect particleEffect = ParticleEffect.NONE;
|
||||
ParticleStyle particleStyle = DefaultStyles.NONE;
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
/**
|
||||
* Copyright Esophose 2016
|
||||
* While using any of the code provided by this plugin
|
||||
* you must not claim it as your own. This plugin may
|
||||
* be modified and installed on a server, but may not
|
||||
* be distributed to any person by any means.
|
||||
*/
|
||||
|
||||
package com.esophose.playerparticles;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
|
@ -15,6 +23,7 @@ import com.esophose.playerparticles.library.ParticleEffect.OrdinaryColor;
|
|||
import com.esophose.playerparticles.library.ParticleEffect.ParticleProperty;
|
||||
import com.esophose.playerparticles.manager.ConfigManager;
|
||||
import com.esophose.playerparticles.manager.MessageManager;
|
||||
import com.esophose.playerparticles.manager.MessageManager.MessageType;
|
||||
import com.esophose.playerparticles.manager.PermissionManager;
|
||||
import com.esophose.playerparticles.styles.DefaultStyles;
|
||||
import com.esophose.playerparticles.styles.api.ParticleStyle;
|
||||
|
@ -37,7 +46,7 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
Player p = (Player) sender;
|
||||
|
||||
if (args.length == 0) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-invalid-arguments", null) + ChatColor.GREEN + " /pp help", ChatColor.RED);
|
||||
MessageManager.sendMessage(p, MessageType.INVALID_ARGUMENTS);
|
||||
return true;
|
||||
} else {
|
||||
switch (args[0].toLowerCase()) {
|
||||
|
@ -69,7 +78,7 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
onReset(p, args);
|
||||
break;
|
||||
default:
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-invalid-arguments", null) + ChatColor.GREEN + " /pp help", ChatColor.RED);
|
||||
MessageManager.sendMessage(p, MessageType.INVALID_ARGUMENTS);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -82,9 +91,8 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
* @param args The arguments for the command
|
||||
*/
|
||||
private void onHelp(Player p, String[] args) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-available-commands", null), ChatColor.GREEN);
|
||||
MessageManager.getInstance().sendMessage(p, "effect, effects, style, styles, data, reset, worlds, version, help", ChatColor.AQUA);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp <command>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.AVAILABLE_COMMANDS);
|
||||
MessageManager.sendMessage(p, MessageType.COMMAND_USAGE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -94,20 +102,18 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
* @param args The arguments for the command
|
||||
*/
|
||||
private void onWorlds(Player p, String[] args) {
|
||||
String worlds = "";
|
||||
if (ConfigManager.getInstance().getDisabledWorlds() == null) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-disabled-worlds-none", null), ChatColor.GREEN);
|
||||
if (ConfigManager.getInstance().getDisabledWorlds() == null || ConfigManager.getInstance().getDisabledWorlds().isEmpty()) {
|
||||
MessageManager.sendMessage(p, MessageType.DISABLED_WORLDS_NONE);
|
||||
return;
|
||||
}
|
||||
|
||||
String worlds = "";
|
||||
for (String s : ConfigManager.getInstance().getDisabledWorlds()) {
|
||||
worlds += s + ", ";
|
||||
}
|
||||
if (worlds.length() > 2) worlds = worlds.substring(0, worlds.length() - 2);
|
||||
if (worlds.equals("")) {
|
||||
worlds = MessageManager.getMessageFromConfig("message-disabled-worlds-none", null);
|
||||
} else {
|
||||
worlds = MessageManager.getMessageFromConfig("message-disabled-worlds", null) + " " + ChatColor.AQUA + worlds;
|
||||
}
|
||||
MessageManager.getInstance().sendMessage(p, worlds, ChatColor.GREEN);
|
||||
|
||||
MessageManager.sendCustomMessage(p, MessageType.DISABLED_WORLDS.getMessage() + " " + worlds);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -117,8 +123,8 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
* @param args The arguments for the command
|
||||
*/
|
||||
private void onVersion(Player p, String[] args) {
|
||||
MessageManager.getInstance().sendMessage(p, "Running PlayerParticles v" + PlayerParticles.getPlugin().getDescription().getVersion(), ChatColor.GOLD);
|
||||
MessageManager.getInstance().sendMessage(p, "Plugin created by: Esophose", ChatColor.GOLD);
|
||||
MessageManager.sendCustomMessage(p, ChatColor.GOLD + "Running PlayerParticles v" + PlayerParticles.getPlugin().getDescription().getVersion());
|
||||
MessageManager.sendCustomMessage(p, ChatColor.GOLD + "Plugin created by: Esophose");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -132,22 +138,22 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
if ((!effect.hasProperty(ParticleProperty.REQUIRES_DATA) && !effect.hasProperty(ParticleProperty.COLORABLE)) || args.length == 1) {
|
||||
if (effect.hasProperty(ParticleProperty.COLORABLE)) {
|
||||
if (effect == ParticleEffect.NOTE) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-note-data-usage", null), ChatColor.YELLOW);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-23>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_USAGE, "note");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.NOTE_DATA_USAGE.getMessage());
|
||||
} else {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-color-data-usage", null), ChatColor.YELLOW);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-255> <0-255> <0-255>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_USAGE, "color");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.COLOR_DATA_USAGE.getMessage());
|
||||
}
|
||||
} else if (effect.hasProperty(ParticleProperty.REQUIRES_DATA)) {
|
||||
if (effect == ParticleEffect.ITEM_CRACK) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-item-data-usage", null), ChatColor.YELLOW);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <itemName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_USAGE, "item");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.ITEM_DATA_USAGE.getMessage());
|
||||
} else {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-block-data-usage", null), ChatColor.YELLOW);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <blockName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_USAGE, "block");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.BLOCK_DATA_USAGE.getMessage());
|
||||
}
|
||||
} else {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-no-data-usage", null), ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.NO_DATA_USAGE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
@ -158,22 +164,22 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
try {
|
||||
note = Integer.parseInt(args[1]);
|
||||
} catch (Exception e) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-note-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-23>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "note");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.NOTE_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
if (note < 0 || note > 23) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-note-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-23>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "note");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.NOTE_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
ConfigManager.getInstance().savePPlayer(p.getUniqueId(), new NoteColor(note));
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-note-data-applied", null), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_APPLIED, "note");
|
||||
} else {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-note-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-23>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "note");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.NOTE_DATA_USAGE.getMessage());
|
||||
}
|
||||
} else {
|
||||
if (args.length >= 4) {
|
||||
|
@ -186,22 +192,22 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
g = Integer.parseInt(args[2]);
|
||||
b = Integer.parseInt(args[3]);
|
||||
} catch (Exception e) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-color-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-255> <0-255> <0-255>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "color");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.COLOR_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
if (r < 0 || r > 255 || g < 0 || g > 255 || b < 0 || b > 255) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-color-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-255> <0-255> <0-255>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "color");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.COLOR_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
ConfigManager.getInstance().savePPlayer(p.getUniqueId(), new OrdinaryColor(r, g, b));
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-color-data-applied", null), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_APPLIED, "color");
|
||||
} else {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-color-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <0-255> <0-255> <0-255>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "color");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.COLOR_DATA_USAGE.getMessage());
|
||||
}
|
||||
}
|
||||
} else if (effect.hasProperty(ParticleProperty.REQUIRES_DATA)) {
|
||||
|
@ -214,33 +220,33 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
if (material == null) material = Material.matchMaterial(args[1]);
|
||||
if (material == null) throw new Exception();
|
||||
} catch (Exception e) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-item-data-unknown", args[1]), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <itemName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_MATERIAL_UNKNOWN, "item");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.ITEM_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
data = Integer.parseInt(args[2]);
|
||||
} catch (Exception e) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-item-data-usage", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <itemName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "item");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.ITEM_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
if (material.isBlock()) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-item-data-mismatch", material.name()), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <itemName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_MATERIAL_MISMATCH, "item");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.ITEM_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
if (data < 0 || data > 15) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-item-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <itemName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "item");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.ITEM_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
ConfigManager.getInstance().savePPlayer(p.getUniqueId(), new ItemData(material, (byte) data));
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-item-data-applied", null), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_APPLIED, "item");
|
||||
} else {
|
||||
Material material = null;
|
||||
int data = -1;
|
||||
|
@ -250,33 +256,33 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
if (material == null) material = Material.matchMaterial(args[1]);
|
||||
if (material == null) throw new Exception();
|
||||
} catch (Exception e) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-block-data-unknown", args[1]), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <blockName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_MATERIAL_UNKNOWN, "block");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.BLOCK_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
try {
|
||||
data = Integer.parseInt(args[2]);
|
||||
} catch (Exception e) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-block-data-usage", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <blockName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "block");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.BLOCK_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
if (!material.isBlock()) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-block-data-mismatch", material.name()), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <blockName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_MATERIAL_MISMATCH, "block");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.BLOCK_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
if (data < 0 || data > 15) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-block-data-invalid-arguments", null), ChatColor.RED);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp data <blockName> <0-15>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_INVALID_ARGUMENTS, "block");
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.BLOCK_DATA_USAGE.getMessage());
|
||||
return;
|
||||
}
|
||||
|
||||
ConfigManager.getInstance().savePPlayer(p.getUniqueId(), new BlockData(material, (byte) data));
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-block-data-applied", null), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.DATA_APPLIED, "block");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -289,7 +295,7 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
*/
|
||||
private void onReset(Player p, String[] args) {
|
||||
ConfigManager.getInstance().resetPPlayer(p.getUniqueId());
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-reset", null), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.RESET);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -300,25 +306,25 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
*/
|
||||
private void onEffect(Player p, String[] args) {
|
||||
if (args.length == 1) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-invalid-type", null) + ChatColor.GREEN + " /pp effects | /pp effect <type>", ChatColor.RED);
|
||||
MessageManager.sendMessage(p, MessageType.INVALID_TYPE);
|
||||
return;
|
||||
}
|
||||
String argument = args[1].replace("_", "");
|
||||
if (ParticleCreator.particleFromString(argument) != null) {
|
||||
ParticleEffect effect = ParticleCreator.particleFromString(argument);
|
||||
if (!PermissionManager.hasEffectPermission(p, effect)) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-no-permission", ChatColor.AQUA + effect.getName().toLowerCase() + ChatColor.RED), ChatColor.RED);
|
||||
MessageManager.sendMessage(p, MessageType.NO_PERMISSION, effect.getName().toLowerCase());
|
||||
return;
|
||||
}
|
||||
ConfigManager.getInstance().savePPlayer(p.getUniqueId(), effect);
|
||||
if (effect != ParticleEffect.NONE) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-now-using", ChatColor.AQUA + effect.getName().toLowerCase() + ChatColor.GREEN), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.NOW_USING, effect.getName().toLowerCase());
|
||||
} else {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-cleared-particles", null), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.CLEARED_PARTICLES);
|
||||
}
|
||||
return;
|
||||
}
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-invalid-type", null) + ChatColor.GREEN + " /pp effects", ChatColor.RED);
|
||||
MessageManager.sendMessage(p, MessageType.INVALID_TYPE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -328,20 +334,22 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
* @param args The arguments for the command
|
||||
*/
|
||||
private void onEffects(Player p, String[] args) {
|
||||
String toSend = MessageManager.getMessageFromConfig("message-use", null) + " ";
|
||||
String toSend = MessageType.USE.getMessage() + " ";
|
||||
for (ParticleEffect effect : ParticleEffect.getSupportedEffects()) {
|
||||
if (PermissionManager.hasEffectPermission(p, effect)) {
|
||||
toSend += effect.getName().toLowerCase().replace("_", "") + ", ";
|
||||
continue;
|
||||
}
|
||||
}
|
||||
if (toSend.equals(MessageManager.getMessageFromConfig("message-use", null) + " ")) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-no-particles", null), ChatColor.RED);
|
||||
if (toSend.endsWith(", ")) {
|
||||
toSend = toSend.substring(0, toSend.length() - 2);
|
||||
}
|
||||
if (toSend.equals(MessageType.USE.getMessage() + " " + ParticleEffect.NONE.getName())) {
|
||||
MessageManager.sendMessage(p, MessageType.NO_PARTICLES);
|
||||
return;
|
||||
}
|
||||
toSend = toSend + "clear";
|
||||
MessageManager.getInstance().sendMessage(p, toSend, ChatColor.GREEN);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp effect <type>", ChatColor.YELLOW);
|
||||
MessageManager.sendCustomMessage(p, toSend);
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.PARTICLE_USAGE.getMessage());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -352,25 +360,25 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
*/
|
||||
private void onStyle(Player p, String[] args) {
|
||||
if (args.length == 1) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp style <type>", ChatColor.YELLOW);
|
||||
MessageManager.sendMessage(p, MessageType.INVALID_TYPE_STYLE);
|
||||
return;
|
||||
}
|
||||
String argument = args[1].replace("_", "");
|
||||
if (ParticleStyleManager.styleFromString(argument) != null) {
|
||||
ParticleStyle style = ParticleStyleManager.styleFromString(argument);
|
||||
if (!PermissionManager.hasStylePermission(p, style)) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-no-permission-style", ChatColor.AQUA + style.getName().toLowerCase() + ChatColor.RED), ChatColor.RED);
|
||||
MessageManager.sendMessage(p, MessageType.NO_PERMISSION_STYLE, style.getName().toLowerCase());
|
||||
return;
|
||||
}
|
||||
ConfigManager.getInstance().savePPlayer(p.getUniqueId(), style);
|
||||
if (style != DefaultStyles.NONE) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-now-using-style", ChatColor.AQUA + style.getName().toLowerCase() + ChatColor.GREEN), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.NOW_USING_STYLE, style.getName().toLowerCase());
|
||||
} else {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-cleared-style", null), ChatColor.GREEN);
|
||||
MessageManager.sendMessage(p, MessageType.CLEARED_STYLE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-invalid-type-style", null) + ChatColor.GREEN + " /pp styles", ChatColor.RED);
|
||||
MessageManager.sendMessage(p, MessageType.INVALID_TYPE_STYLE);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -380,7 +388,7 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
* @param args The arguments for the command
|
||||
*/
|
||||
private void onStyles(Player p, String[] args) {
|
||||
String toSend = MessageManager.getMessageFromConfig("message-use-style", null) + " ";
|
||||
String toSend = MessageType.USE.getMessage() + " ";
|
||||
for (ParticleStyle style : ParticleStyleManager.getStyles()) {
|
||||
if (PermissionManager.hasStylePermission(p, style)) {
|
||||
toSend += style.getName().toLowerCase();
|
||||
|
@ -390,12 +398,12 @@ public class ParticleCommandExecutor implements CommandExecutor {
|
|||
if (toSend.endsWith(", ")) {
|
||||
toSend = toSend.substring(0, toSend.length() - 2);
|
||||
}
|
||||
if (toSend.equals(MessageManager.getMessageFromConfig("message-use-style", null) + " " + DefaultStyles.NONE.getName().toLowerCase())) {
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-no-styles", null), ChatColor.RED);
|
||||
if (toSend.equals(MessageType.USE.getMessage() + " " + DefaultStyles.NONE.getName().toLowerCase())) {
|
||||
MessageManager.sendMessage(p, MessageType.NO_STYLES);
|
||||
return;
|
||||
}
|
||||
MessageManager.getInstance().sendMessage(p, toSend, ChatColor.GREEN);
|
||||
MessageManager.getInstance().sendMessage(p, MessageManager.getMessageFromConfig("message-usage", null) + ChatColor.AQUA + " /pp style <type>", ChatColor.YELLOW);
|
||||
MessageManager.sendCustomMessage(p, toSend);
|
||||
MessageManager.sendCustomMessage(p, MessageType.USAGE.getMessage() + " " + MessageType.STYLE_USAGE.getMessage());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ package com.esophose.playerparticles;
|
|||
import java.util.ArrayList;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
@ -89,15 +90,14 @@ public class ParticleCreator extends BukkitRunnable implements Listener {
|
|||
|
||||
/**
|
||||
* The main loop to display all the particles
|
||||
* Updates all the timing variables
|
||||
* Refreshes the database connection if it is enabled and it has been 30 seconds since last refresh
|
||||
* Displays the particles for all players on the server
|
||||
* Does not display particles if the world is disabled or if the player is in spectator mode
|
||||
*/
|
||||
public void run() {
|
||||
ParticleStyleManager.updateTimers();
|
||||
|
||||
for (Player player : Bukkit.getOnlinePlayers()) {
|
||||
if (ConfigManager.getInstance().isWorldDisabled(player.getWorld().getName())) continue;
|
||||
if (player.getGameMode() == GameMode.SPECTATOR) continue;
|
||||
PPlayer pplayer = ConfigManager.getInstance().getPPlayer(player.getUniqueId());
|
||||
if (PermissionManager.hasEffectPermission(player, pplayer.getParticleEffect())) {
|
||||
Location loc = player.getLocation();
|
||||
|
|
|
@ -1,3 +1,11 @@
|
|||
/**
|
||||
* Copyright Esophose 2016
|
||||
* While using any of the code provided by this plugin
|
||||
* you must not claim it as your own. This plugin may
|
||||
* be modified and installed on a server, but may not
|
||||
* be distributed to any person by any means.
|
||||
*/
|
||||
|
||||
package com.esophose.playerparticles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
@ -6,7 +14,13 @@ import org.bukkit.Material;
|
|||
|
||||
public class ParticlesUtil {
|
||||
|
||||
// TODO: Find a more reliable way of doing this that works better
|
||||
/**
|
||||
* Finds a block/item as a material from a string
|
||||
* There must be some better way to do this that reliably gets the correct material
|
||||
*
|
||||
* @param input The material name as a string
|
||||
* @return The material from the string
|
||||
*/
|
||||
@SuppressWarnings("deprecation")
|
||||
public static Material closestMatch(String input) {
|
||||
ArrayList<Material> matchList = new ArrayList<Material>();
|
||||
|
|
|
@ -7,6 +7,8 @@
|
|||
*
|
||||
* TODO: Make sure copyright notice is on all files
|
||||
* TODO: Make sure all the comments are properly formatted still
|
||||
* TODO: Add option to config to show particles in spectator mode or not - Disabled by default
|
||||
* TODO: Add message configuration for data usage
|
||||
*/
|
||||
|
||||
package com.esophose.playerparticles;
|
||||
|
@ -20,6 +22,7 @@ import org.bukkit.plugin.Plugin;
|
|||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import com.esophose.playerparticles.library.MySQL;
|
||||
import com.esophose.playerparticles.manager.MessageManager;
|
||||
import com.esophose.playerparticles.styles.DefaultStyles;
|
||||
import com.esophose.playerparticles.updater.PluginUpdateListener;
|
||||
import com.esophose.playerparticles.updater.Updater;
|
||||
|
@ -55,6 +58,7 @@ public class PlayerParticles extends JavaPlugin {
|
|||
*/
|
||||
public void onEnable() {
|
||||
DefaultStyles.registerStyles();
|
||||
MessageManager.setup();
|
||||
saveDefaultConfig();
|
||||
getCommand("pp").setTabCompleter(new ParticleCommandCompleter());
|
||||
getCommand("pp").setExecutor(new ParticleCommandExecutor());
|
||||
|
|
|
@ -116,11 +116,9 @@ public abstract class Database {
|
|||
String[] queries = query.split(";");
|
||||
for (String q : queries) {
|
||||
statement.addBatch(q);
|
||||
System.out.println("Running query: " + q);
|
||||
}
|
||||
results = statement.executeBatch();
|
||||
} else {
|
||||
System.out.println("Running query: " + query);
|
||||
results = new int[] { statement.executeUpdate(query) };
|
||||
}
|
||||
|
||||
|
|
|
@ -47,14 +47,10 @@ import com.esophose.playerparticles.library.ReflectionUtils.PackageType;
|
|||
|
||||
/**
|
||||
* Modified a couple things for the plugin
|
||||
<<<<<<< HEAD
|
||||
*
|
||||
* Updated to 1.10
|
||||
*
|
||||
* @author (of changes) Esophose
|
||||
=======
|
||||
*
|
||||
* @author Esophose
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
*/
|
||||
public enum ParticleEffect {
|
||||
|
||||
|
@ -106,7 +102,9 @@ public enum ParticleEffect {
|
|||
END_ROD("endrod", 43, 9),
|
||||
DAMAGE_INDICATOR("damageindicator", 44, 9),
|
||||
SWEEP_ATTACK("sweepattack", 45, 9),
|
||||
FALLING_DUST("fallingdust", 46, 10, ParticleProperty.DIRECTIONAL, ParticleProperty.REQUIRES_DATA);
|
||||
FALLING_DUST("fallingdust", 46, 10, ParticleProperty.DIRECTIONAL, ParticleProperty.REQUIRES_DATA),
|
||||
TOTEM("totem", 47, 11, ParticleProperty.DIRECTIONAL),
|
||||
SPIT("spit", 48, 11, ParticleProperty.DIRECTIONAL);
|
||||
|
||||
private static final Map<String, ParticleEffect> NAME_MAP = new HashMap<String, ParticleEffect>();
|
||||
private static final Map<Integer, ParticleEffect> ID_MAP = new HashMap<Integer, ParticleEffect>();
|
||||
|
|
157
src/com/esophose/playerparticles/library/VectorUtils.java
Normal file
157
src/com/esophose/playerparticles/library/VectorUtils.java
Normal file
|
@ -0,0 +1,157 @@
|
|||
/**
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 Slikey
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
package com.esophose.playerparticles.library;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
public final class VectorUtils {
|
||||
|
||||
/**
|
||||
* Not instantiable
|
||||
*/
|
||||
private VectorUtils() { }
|
||||
|
||||
/**
|
||||
* Rotates a vector around the X axis at an angle
|
||||
*
|
||||
* @param v Starting vector
|
||||
* @param angle How much to rotate
|
||||
* @return The starting vector rotated
|
||||
*/
|
||||
public static final Vector rotateAroundAxisX(Vector v, double angle) {
|
||||
double y, z, cos, sin;
|
||||
cos = Math.cos(angle);
|
||||
sin = Math.sin(angle);
|
||||
y = v.getY() * cos - v.getZ() * sin;
|
||||
z = v.getY() * sin + v.getZ() * cos;
|
||||
return v.setY(y).setZ(z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotates a vector around the Y axis at an angle
|
||||
*
|
||||
* @param v Starting vector
|
||||
* @param angle How much to rotate
|
||||
* @return The starting vector rotated
|
||||
*/
|
||||
public static final Vector rotateAroundAxisY(Vector v, double angle) {
|
||||
double x, z, cos, sin;
|
||||
cos = Math.cos(angle);
|
||||
sin = Math.sin(angle);
|
||||
x = v.getX() * cos + v.getZ() * sin;
|
||||
z = v.getX() * -sin + v.getZ() * cos;
|
||||
return v.setX(x).setZ(z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotates a vector around the Z axis at an angle
|
||||
*
|
||||
* @param v Starting vector
|
||||
* @param angle How much to rotate
|
||||
* @return The starting vector rotated
|
||||
*/
|
||||
public static final Vector rotateAroundAxisZ(Vector v, double angle) {
|
||||
double x, y, cos, sin;
|
||||
cos = Math.cos(angle);
|
||||
sin = Math.sin(angle);
|
||||
x = v.getX() * cos - v.getY() * sin;
|
||||
y = v.getX() * sin + v.getY() * cos;
|
||||
return v.setX(x).setY(y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotates a vector around the X, Y, and Z axes
|
||||
*
|
||||
* @param v The starting vector
|
||||
* @param angleX The change angle on X
|
||||
* @param angleY The change angle on Y
|
||||
* @param angleZ The change angle on Z
|
||||
* @return The starting vector rotated
|
||||
*/
|
||||
public static final Vector rotateVector(Vector v, double angleX, double angleY, double angleZ) {
|
||||
rotateAroundAxisX(v, angleX);
|
||||
rotateAroundAxisY(v, angleY);
|
||||
rotateAroundAxisZ(v, angleZ);
|
||||
return v;
|
||||
}
|
||||
|
||||
/**
|
||||
* Rotate a vector about a location using that location's direction
|
||||
*
|
||||
* @param v The starting vector
|
||||
* @param location The location to rotate around
|
||||
* @return The starting vector rotated
|
||||
*/
|
||||
public static final Vector rotateVector(Vector v, Location location) {
|
||||
return rotateVector(v, location.getYaw(), location.getPitch());
|
||||
}
|
||||
|
||||
/**
|
||||
* This handles non-unit vectors, with yaw and pitch instead of X,Y,Z angles.
|
||||
*
|
||||
* Thanks to SexyToad!
|
||||
*
|
||||
* @param v The starting vector
|
||||
* @param yawDegrees The yaw offset in degrees
|
||||
* @param pitchDegrees The pitch offset in degrees
|
||||
* @return The starting vector rotated
|
||||
*/
|
||||
public static final Vector rotateVector(Vector v, float yawDegrees, float pitchDegrees) {
|
||||
double yaw = Math.toRadians(-1 * (yawDegrees + 90));
|
||||
double pitch = Math.toRadians(-pitchDegrees);
|
||||
|
||||
double cosYaw = Math.cos(yaw);
|
||||
double cosPitch = Math.cos(pitch);
|
||||
double sinYaw = Math.sin(yaw);
|
||||
double sinPitch = Math.sin(pitch);
|
||||
|
||||
double initialX, initialY, initialZ;
|
||||
double x, y, z;
|
||||
|
||||
// Z_Axis rotation (Pitch)
|
||||
initialX = v.getX();
|
||||
initialY = v.getY();
|
||||
x = initialX * cosPitch - initialY * sinPitch;
|
||||
y = initialX * sinPitch + initialY * cosPitch;
|
||||
|
||||
// Y_Axis rotation (Yaw)
|
||||
initialZ = v.getZ();
|
||||
initialX = x;
|
||||
z = initialZ * cosYaw - initialX * sinYaw;
|
||||
x = initialZ * sinYaw + initialX * cosYaw;
|
||||
|
||||
return new Vector(x, y, z);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the angle toward the X axis
|
||||
*
|
||||
* @param vector
|
||||
* @return
|
||||
*/
|
||||
public static final double angleToXAxis(Vector vector) {
|
||||
return Math.atan2(vector.getX(), vector.getY());
|
||||
}
|
||||
}
|
|
@ -12,7 +12,7 @@ import java.io.File;
|
|||
import java.io.IOException;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Color;
|
||||
|
@ -399,10 +399,9 @@ public class ConfigManager {
|
|||
*
|
||||
* @return All world names that are disabled
|
||||
*/
|
||||
@SuppressWarnings("unchecked")
|
||||
public ArrayList<String> getDisabledWorlds() {
|
||||
public List<String> getDisabledWorlds() {
|
||||
if (PlayerParticles.getPlugin().getConfig().get("disabled-worlds") != null) {
|
||||
return ((ArrayList<String>) PlayerParticles.getPlugin().getConfig().get("disabled-worlds"));
|
||||
return PlayerParticles.getPlugin().getConfig().getStringList("disabled-worlds");
|
||||
} else return null;
|
||||
}
|
||||
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
package com.esophose.playerparticles.manager;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.esophose.playerparticles.PlayerParticles;
|
||||
|
@ -16,80 +17,148 @@ import com.esophose.playerparticles.PlayerParticles;
|
|||
public class MessageManager {
|
||||
|
||||
/**
|
||||
* The instance of the MessageManager, we only need one of these
|
||||
* Contains the location in the config of every chat message
|
||||
*/
|
||||
private static MessageManager instance = new MessageManager();
|
||||
public static enum MessageType {
|
||||
|
||||
// Particles
|
||||
NO_PERMISSION("message-no-permission"),
|
||||
NO_PARTICLES("message-no-particles"),
|
||||
NOW_USING("message-now-using"),
|
||||
CLEARED_PARTICLES("message-cleared-particles"),
|
||||
INVALID_TYPE("message-invalid-type"),
|
||||
PARTICLE_USAGE("message-particle-usage"),
|
||||
|
||||
// Styles
|
||||
NO_PERMISSION_STYLE("message-no-permission-style"),
|
||||
NO_STYLES("message-no-styles"),
|
||||
NOW_USING_STYLE("message-now-using-style"),
|
||||
CLEARED_STYLE("message-cleared-style"),
|
||||
USE_STYLE("message-use-style"),
|
||||
INVALID_TYPE_STYLE("message-invalid-type-style"),
|
||||
STYLE_USAGE("message-style-usage"),
|
||||
|
||||
// Data
|
||||
DATA_USAGE("message-data-usage"),
|
||||
NO_DATA_USAGE("message-no-data-usage"),
|
||||
DATA_APPLIED("message-data-applied"),
|
||||
DATA_INVALID_ARGUMENTS("message-data-invalid-arguments"),
|
||||
DATA_MATERIAL_UNKNOWN("message-data-material-unknown"),
|
||||
DATA_MATERIAL_MISMATCH("message-data-material-mismatch"),
|
||||
NOTE_DATA_USAGE("message-note-data-usage"),
|
||||
COLOR_DATA_USAGE("message-color-data-usage"),
|
||||
ITEM_DATA_USAGE("message-item-data-usage"),
|
||||
BLOCK_DATA_USAGE("message-block-data-usage"),
|
||||
|
||||
// Prefixes
|
||||
USE("message-use"),
|
||||
USAGE("message-usage"),
|
||||
RESET("message-reset"),
|
||||
|
||||
// Other
|
||||
INVALID_ARGUMENTS("message-invalid-arguments"),
|
||||
AVAILABLE_COMMANDS("message-available-commands"),
|
||||
DISABLED_WORLDS_NONE("message-disabled-worlds-none"),
|
||||
DISABLED_WORLDS("message-disabled-worlds"),
|
||||
COMMAND_USAGE("message-command-usage");
|
||||
|
||||
public String configLocation;
|
||||
|
||||
MessageType(String configLocation) {
|
||||
this.configLocation = configLocation;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the message with the given config path
|
||||
*
|
||||
* @return The message from the config
|
||||
*/
|
||||
public String getMessage() {
|
||||
return ChatColor.translateAlternateColorCodes('&', config.getString(this.configLocation));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Values contained in the config used for custom messages
|
||||
* Stores the main config for quick access
|
||||
*/
|
||||
private boolean messagesEnabled, prefixEnabled;
|
||||
private static FileConfiguration config;
|
||||
/**
|
||||
* Stores if messages and their prefixes should be displayed
|
||||
*/
|
||||
private static boolean messagesEnabled, prefixEnabled;
|
||||
/**
|
||||
* The prefix to place before all sent messages contained in the config
|
||||
*/
|
||||
private String messagePrefix;
|
||||
private static String messagePrefix;
|
||||
|
||||
/**
|
||||
* Sets up all the above variables with values from the plugin config
|
||||
* Used to set up the MessageManager
|
||||
* This should only get called once by the PlayerParticles class, however
|
||||
* calling it multiple times wont affect anything negatively
|
||||
*/
|
||||
private MessageManager() {
|
||||
this.messagesEnabled = PlayerParticles.getPlugin().getConfig().getBoolean("messages-enabled");
|
||||
this.prefixEnabled = PlayerParticles.getPlugin().getConfig().getBoolean("use-message-prefix");
|
||||
this.messagePrefix = PlayerParticles.getPlugin().getConfig().getString("message-prefix");
|
||||
this.messagePrefix = ChatColor.translateAlternateColorCodes('&', this.messagePrefix);
|
||||
public static void setup() {
|
||||
config = PlayerParticles.getPlugin().getConfig();
|
||||
messagesEnabled = config.getBoolean("messages-enabled");
|
||||
prefixEnabled = config.getBoolean("use-message-prefix");
|
||||
messagePrefix = parseColors(config.getString("message-prefix"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the instance of the MessageManager
|
||||
*
|
||||
* @return The instance of the MessageManager
|
||||
*/
|
||||
public static MessageManager getInstance() {
|
||||
return instance;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a message to a player
|
||||
* Sends a message to the given player
|
||||
*
|
||||
* @param player The player to send the message to
|
||||
* @param message The message to send to the player
|
||||
* @param color The chat color to put before the message
|
||||
* @param messageType The message to send to the player
|
||||
*/
|
||||
public void sendMessage(Player player, String message, ChatColor color) {
|
||||
if (!this.messagesEnabled) return;
|
||||
if (this.prefixEnabled) {
|
||||
message = this.messagePrefix + color + " " + message;
|
||||
} else {
|
||||
message = color + message;
|
||||
public static void sendMessage(Player player, MessageType messageType) {
|
||||
if (!messagesEnabled) return;
|
||||
|
||||
String message = messageType.getMessage();
|
||||
if (prefixEnabled) {
|
||||
message = messagePrefix + " " + message;
|
||||
}
|
||||
player.sendMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sends a player a message without any custom coloring
|
||||
* This will become the default in v4.1
|
||||
*
|
||||
* Sends a message to the given player and allows for replacing {TYPE}
|
||||
* @param player The player to send the message to
|
||||
* @param message The message to send to the player
|
||||
* @param messageType The message to send to the player
|
||||
* @param typeReplacement What {TYPE} should be replaced with
|
||||
*/
|
||||
public void sendMessage(Player player, String message) {
|
||||
if (!this.messagesEnabled) return;
|
||||
if (this.prefixEnabled) {
|
||||
message = this.messagePrefix + message;
|
||||
public static void sendMessage(Player player, MessageType messageType, String typeReplacement) {
|
||||
if (!messagesEnabled) return;
|
||||
|
||||
String message = messageType.getMessage().replaceAll("\\{TYPE\\}", typeReplacement);
|
||||
if (prefixEnabled) {
|
||||
message = messagePrefix + " " + message;
|
||||
}
|
||||
player.sendMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets a message from the config with the formatting specified
|
||||
* Sends a custom message
|
||||
* Used in cases of string building
|
||||
*
|
||||
* @param target The string to find in the config
|
||||
* @param replacement The replacement for {TYPE}, can be null
|
||||
* @return The message requested with the applied formatting
|
||||
* @param player The player to send the message to
|
||||
* @param message The message to send to the player
|
||||
*/
|
||||
public static String getMessageFromConfig(String target, String replacement) {
|
||||
String message = ChatColor.translateAlternateColorCodes('&', PlayerParticles.getPlugin().getConfig().getString(target));
|
||||
if (replacement != null) message = message.replaceAll("\\{TYPE\\}", replacement);
|
||||
return message;
|
||||
public static void sendCustomMessage(Player player, String message) {
|
||||
if (!messagesEnabled) return;
|
||||
|
||||
if (prefixEnabled) {
|
||||
message = messagePrefix + " " + message;
|
||||
}
|
||||
player.sendMessage(message);
|
||||
}
|
||||
|
||||
/**
|
||||
* Translates all & symbols into the Minecraft chat color symbol
|
||||
*
|
||||
* @param message The input
|
||||
* @return The output, parsed
|
||||
*/
|
||||
public static String parseColors(String message) {
|
||||
return ChatColor.translateAlternateColorCodes('&', message);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ public class PermissionManager {
|
|||
|
||||
/**
|
||||
* Checks if a player has permission to use an effect
|
||||
* Always returns true for 'none'
|
||||
*
|
||||
* @param player The player to check the permission for
|
||||
* @param effect The effect to check
|
||||
|
|
|
@ -9,6 +9,9 @@ import com.esophose.playerparticles.styles.api.ParticleStyleManager;
|
|||
|
||||
public class DefaultStyles {
|
||||
|
||||
/**
|
||||
* All the styles that are available by default from this plugin
|
||||
*/
|
||||
public static ParticleStyle NONE = new ParticleStyleNone();
|
||||
public static ParticleStyle SPIRAL = new ParticleStyleSpiral();
|
||||
public static ParticleStyle HALO = new ParticleStyleHalo();
|
||||
|
@ -18,7 +21,11 @@ public class DefaultStyles {
|
|||
public static ParticleStyle QUADHELIX = new ParticleStyleQuadhelix();
|
||||
public static ParticleStyle ORBIT = new ParticleStyleOrbit();
|
||||
public static ParticleStyle FEET = new ParticleStyleFeet();
|
||||
public static ParticleStyle CUBE = new ParticleStyleCube();
|
||||
|
||||
/**
|
||||
* Registers all the default styles to the ParticleStyleManager
|
||||
*/
|
||||
public static void registerStyles() {
|
||||
ParticleStyleManager.registerStyle(NONE);
|
||||
ParticleStyleManager.registerStyle(SPIRAL);
|
||||
|
@ -29,8 +36,9 @@ public class DefaultStyles {
|
|||
ParticleStyleManager.registerStyle(QUADHELIX);
|
||||
ParticleStyleManager.registerStyle(ORBIT);
|
||||
ParticleStyleManager.registerStyle(FEET);
|
||||
ParticleStyleManager.registerStyle(CUBE);
|
||||
|
||||
Bukkit.getServer().getPluginManager().registerEvents((Listener) MOVE, PlayerParticles.getPlugin());
|
||||
Bukkit.getPluginManager().registerEvents((Listener) MOVE, PlayerParticles.getPlugin());
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,93 @@
|
|||
/**
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2014 Slikey
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
* of this software and associated documentation files (the "Software"), to deal
|
||||
* in the Software without restriction, including without limitation the rights
|
||||
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
* copies of the Software, and to permit persons to whom the Software is
|
||||
* furnished to do so, subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
* SOFTWARE.
|
||||
*/
|
||||
package com.esophose.playerparticles.styles;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import com.esophose.playerparticles.PPlayer;
|
||||
import com.esophose.playerparticles.library.VectorUtils;
|
||||
import com.esophose.playerparticles.styles.api.PParticle;
|
||||
import com.esophose.playerparticles.styles.api.ParticleStyle;
|
||||
|
||||
/**
|
||||
* Credit goes to Slikey who made all this logic for drawing a cube out of particles
|
||||
* The project this is from is called EffectLib and can be found here:
|
||||
* https://github.com/Slikey/EffectLib
|
||||
*/
|
||||
public class ParticleStyleCube implements ParticleStyle {
|
||||
|
||||
private float edgeLength = 2;
|
||||
private double angularVelocityX = (Math.PI / 200) / 5;
|
||||
private double angularVelocityY = (Math.PI / 170) / 5;
|
||||
private double angularVelocityZ = (Math.PI / 155) / 5;
|
||||
private int particles = 8;
|
||||
private int step = 0;
|
||||
|
||||
public PParticle[] getParticles(PPlayer pplayer, Location location) {
|
||||
List<PParticle> pparticles = new ArrayList<PParticle>();
|
||||
|
||||
double xRotation = 0, yRotation = 0, zRotation = 0;
|
||||
xRotation = step * angularVelocityX;
|
||||
yRotation = step * angularVelocityY;
|
||||
zRotation = step * angularVelocityZ;
|
||||
float a = edgeLength / 2;
|
||||
double angleX, angleY;
|
||||
Vector v = new Vector();
|
||||
for (int i = 0; i < 4; i++) {
|
||||
angleY = i * Math.PI / 2;
|
||||
for (int j = 0; j < 2; j++) {
|
||||
angleX = j * Math.PI;
|
||||
for (int p = 0; p <= particles; p++) {
|
||||
v.setX(a).setY(a);
|
||||
v.setZ(edgeLength * p / particles - a);
|
||||
VectorUtils.rotateAroundAxisX(v, angleX);
|
||||
VectorUtils.rotateAroundAxisY(v, angleY);
|
||||
VectorUtils.rotateVector(v, xRotation, yRotation, zRotation);
|
||||
pparticles.add(new PParticle(location.clone().add(v)));
|
||||
}
|
||||
}
|
||||
for (int p = 0; p <= particles; p++) {
|
||||
v.setX(a).setZ(a);
|
||||
v.setY(edgeLength * p / particles - a);
|
||||
VectorUtils.rotateAroundAxisY(v, angleY);
|
||||
VectorUtils.rotateVector(v, xRotation, yRotation, zRotation);
|
||||
pparticles.add(new PParticle(location.clone().add(v)));
|
||||
}
|
||||
}
|
||||
return pparticles.toArray(new PParticle[pparticles.size()]);
|
||||
}
|
||||
|
||||
public void updateTimers() {
|
||||
step++;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return "cube";
|
||||
}
|
||||
|
||||
}
|
|
@ -109,6 +109,10 @@ public class ParticleStyleNone implements ParticleStyle {
|
|||
for (int i = 0; i < 2; i++)
|
||||
particles[i] = new PParticle(location.add(0, 0.75, 0), 0.6F, 0.4F, 0.6F, 0.0F);
|
||||
return particles;
|
||||
} else if (particleEffect.equals(ParticleEffect.TOTEM)) {
|
||||
return new PParticle[] { new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F) };
|
||||
} else if (particleEffect.equals(ParticleEffect.SPIT)) {
|
||||
return new PParticle[] { new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F) };
|
||||
} else {
|
||||
return new PParticle[] { new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F) };
|
||||
}
|
||||
|
|
|
@ -1,9 +1,20 @@
|
|||
/**
|
||||
* Copyright Esophose 2016
|
||||
* While using any of the code provided by this plugin
|
||||
* you must not claim it as your own. This plugin may
|
||||
* be modified and installed on a server, but may not
|
||||
* be distributed to any person by any means.
|
||||
*/
|
||||
|
||||
package com.esophose.playerparticles.styles.api;
|
||||
|
||||
import org.bukkit.Location;
|
||||
|
||||
public class PParticle {
|
||||
|
||||
/**
|
||||
* Data that affects the particle
|
||||
*/
|
||||
private Location location;
|
||||
private float speed;
|
||||
private float xOff, yOff, zOff;
|
||||
|
|
|
@ -14,6 +14,13 @@ import com.esophose.playerparticles.PPlayer;
|
|||
|
||||
public interface ParticleStyle {
|
||||
|
||||
/**
|
||||
* Gets all the particles to display based on the style's logic
|
||||
*
|
||||
* @param pplayer The PPlayer to display the particles for
|
||||
* @param location The central location of the particles
|
||||
* @return A list of all PParticles' to spawn
|
||||
*/
|
||||
public PParticle[] getParticles(PPlayer pplayer, Location location);
|
||||
|
||||
public void updateTimers();
|
||||
|
|
|
@ -1,12 +1,28 @@
|
|||
/**
|
||||
* Copyright Esophose 2016
|
||||
* While using any of the code provided by this plugin
|
||||
* you must not claim it as your own. This plugin may
|
||||
* be modified and installed on a server, but may not
|
||||
* be distributed to any person by any means.
|
||||
*/
|
||||
|
||||
package com.esophose.playerparticles.styles.api;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ParticleStyleManager {
|
||||
|
||||
/**
|
||||
* Arrays that contain all registered styles
|
||||
*/
|
||||
private static ArrayList<ParticleStyle> styles = new ArrayList<ParticleStyle>();
|
||||
private static ArrayList<ParticleStyle> customHandledStyles = new ArrayList<ParticleStyle>();
|
||||
|
||||
/**
|
||||
* Registers a style that is put into the plugin's update loop
|
||||
*
|
||||
* @param style The style to add
|
||||
*/
|
||||
public static void registerStyle(ParticleStyle style) {
|
||||
for (ParticleStyle testAgainst : styles) {
|
||||
if (testAgainst.getName().replace("_", "").equalsIgnoreCase(style.getName())) {
|
||||
|
@ -18,15 +34,30 @@ public class ParticleStyleManager {
|
|||
styles.add(style);
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a style that isn't updated on the normal update loop
|
||||
*
|
||||
* @param style The style to register
|
||||
*/
|
||||
public static void registerCustomHandledStyle(ParticleStyle style) {
|
||||
registerStyle(style);
|
||||
customHandledStyles.add(style);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns if a given style is customly handled
|
||||
*
|
||||
* @param style The style to check
|
||||
* @return If the style is handled in a custom manner
|
||||
*/
|
||||
public static boolean isCustomHandled(ParticleStyle style) {
|
||||
return customHandledStyles.contains(style);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets all registered styles
|
||||
* @return An ArrayList of all registered styles
|
||||
*/
|
||||
public static ArrayList<ParticleStyle> getStyles() {
|
||||
return styles;
|
||||
}
|
||||
|
|
|
@ -21,14 +21,14 @@ public class PluginUpdateListener implements Listener {
|
|||
/**
|
||||
* Called when a player joins and notifies ops if an update is available
|
||||
*
|
||||
* @param e The event
|
||||
* @param e The join event
|
||||
*/
|
||||
@EventHandler
|
||||
public void onPlayerJoin(PlayerJoinEvent e) {
|
||||
if (e.getPlayer().isOp()) {
|
||||
if (PlayerParticles.updateVersion != null) {
|
||||
MessageManager.getInstance().sendMessage(e.getPlayer(), "An update (" + ChatColor.AQUA + "v" + PlayerParticles.updateVersion + ChatColor.YELLOW + ") is available! You are running " + ChatColor.AQUA + "v" + PlayerParticles.getPlugin().getDescription().getVersion(), ChatColor.YELLOW);
|
||||
MessageManager.getInstance().sendMessage(e.getPlayer(), "Download from: http://dev.bukkit.org/bukkit-plugins/playerparticles/", ChatColor.YELLOW);
|
||||
MessageManager.sendCustomMessage(e.getPlayer(), ChatColor.YELLOW + "An update (" + ChatColor.AQUA + "v" + PlayerParticles.updateVersion + ChatColor.YELLOW + ") is available! You are running " + ChatColor.AQUA + "v" + PlayerParticles.getPlugin().getDescription().getVersion());
|
||||
MessageManager.sendCustomMessage(e.getPlayer(), ChatColor.YELLOW + "Download from: http://dev.bukkit.org/bukkit-plugins/playerparticles/");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
193
src/config.yml
193
src/config.yml
|
@ -1,5 +1,5 @@
|
|||
# __________.__ __________ __ .__ .__ _____
|
||||
# \______ \ | _____ ___.__. __________\______ \_____ ________/ |_|__| ____ | | ____ ______ ___ __/ | |
|
||||
# ____________ __________ __ __ __ _____
|
||||
# \______ \ | _____ ___ __ __________\______ \_____ ________/ |_|__| ____ | | ____ ______ ___ __/ | |
|
||||
# | ___/ | \__ \< | |/ __ \_ __ \ ___/\__ \\_ __ \ __\ |/ ___\| | _/ __ \ / ___/ \ \/ / | |_
|
||||
# | | | |__/ __ \\___ \ ___/| | \/ | / __ \| | \/| | | \ \___| |_\ ___/ \___ \ \ / ^ /
|
||||
# |____| |____(____ / ____|\___ >__| |____| (____ /__| |__| |__|\___ >____/\___ >____ > \_/\____ |
|
||||
|
@ -13,7 +13,7 @@
|
|||
|
||||
# Changing this value will reset your config on the next server reload/restart.
|
||||
# I don't recommend changing it
|
||||
version: 4
|
||||
version: 4.1
|
||||
|
||||
# How many ticks to wait before spawning more particles
|
||||
# Increasing this value may cause less lag, but will decrease prettiness
|
||||
|
@ -27,6 +27,7 @@ ticks-per-particle: 1
|
|||
check-updates: true
|
||||
|
||||
# The worlds which this plugin is disabled in
|
||||
# Remove the [] before you enter worlds names
|
||||
# Default: []
|
||||
disabled-worlds: []
|
||||
# - your_world_name_here
|
||||
|
@ -43,12 +44,13 @@ use-message-prefix: true
|
|||
# The prefix to use for all PlayerParticle messages
|
||||
# Use & to set color / format
|
||||
# This is useless if use-message-prefix is set to false
|
||||
# Default: '&c[&ePlayerParticles&c]'
|
||||
# Default: '&7[&3PlayerParticles&7]'
|
||||
message-prefix: '&7[&3PlayerParticles&7]'
|
||||
|
||||
# ================================================================ #
|
||||
# MESSAGE CONFIGURATION #
|
||||
# Important Notes: #
|
||||
# * You can use the & symbol to color the messages #
|
||||
# * {TYPE} Will be replaced with whatever that message requires #
|
||||
# * You can not use the apostrophe character! ( ' ) #
|
||||
# ================================================================ #
|
||||
|
@ -58,153 +60,146 @@ message-prefix: '&7[&3PlayerParticles&7]'
|
|||
# ------------- #
|
||||
|
||||
# No Particle Permission
|
||||
# Default: 'You do not have permission to use {TYPE} particles!'
|
||||
message-no-permission: 'You do not have permission to use {TYPE} particles!'
|
||||
# Default: '&cYou do not have permission to use &b{TYPE} &cparticles!'
|
||||
message-no-permission: '&cYou do not have permission to use &b{TYPE} &cparticles!'
|
||||
|
||||
# /pp list No Particles
|
||||
# Default: 'You do not have permission to use any particles!'
|
||||
message-no-particles: 'You do not have permission to use any particles!'
|
||||
# Default: '&cYou do not have permission to use any particles!'
|
||||
message-no-particles: '&cYou do not have permission to use any particles!'
|
||||
|
||||
# Now Using Particles
|
||||
# Default: 'Now using {TYPE} particles!'
|
||||
message-now-using: 'Now using {TYPE} particles!'
|
||||
# Default: '&aNow using &b{TYPE} &aparticles!'
|
||||
message-now-using: '&aNow using &b{TYPE} &aparticles!'
|
||||
|
||||
# Cleared Particles
|
||||
# Default: 'Your particles have been cleared!'
|
||||
message-cleared-particles: 'Your particles have been cleared!'
|
||||
|
||||
# You Can Use Particles
|
||||
# Default: 'You can use:'
|
||||
message-use: 'You can use:'
|
||||
# Default: '&aYour particles have been cleared!'
|
||||
message-cleared-particles: '&aYour particles have been cleared!'
|
||||
|
||||
# Invalid Particle Type
|
||||
# Default: 'Invalid particle type!'
|
||||
message-invalid-type: 'Invalid particle type!'
|
||||
# Default: '&cInvalid particle type! &b/pp effects'
|
||||
message-invalid-type: '&cInvalid particle type! &b/pp effects &c| &b/pp effect <type>'
|
||||
|
||||
# Particle Command Usage
|
||||
# You should not change the text here, only the coloring
|
||||
# Default: '&b/pp effect <type>'
|
||||
message-particle-usage: '&b/pp effect <type>'
|
||||
|
||||
# -------------- #
|
||||
# Styles #
|
||||
# -------------- #
|
||||
|
||||
# No Style Permission
|
||||
# Default: 'You do not have permission to use the style type {TYPE}!'
|
||||
message-no-permission-style: 'You do not have permission to use the style type {TYPE}!'
|
||||
# Default: '&cYou do not have permission to use the style type &b{TYPE}&c!'
|
||||
message-no-permission-style: '&cYou do not have permission to use the style type &b{TYPE}&c!'
|
||||
|
||||
# /pp styles No Styles
|
||||
# Default: 'You do not have permission to use any particles!'
|
||||
message-no-styles: 'You do not have permission to use any styles!'
|
||||
# Default: '&cYou do not have permission to use any styles!'
|
||||
message-no-styles: '&cYou do not have permission to use any styles!'
|
||||
|
||||
# Now Using Style
|
||||
# Default: 'Now using the style type {TYPE}!'
|
||||
message-now-using-style: 'Now using the style type {TYPE}!'
|
||||
# Default: '&aNow using the style type &b{TYPE}&a!'
|
||||
message-now-using-style: '&aNow using the style type &b{TYPE}&a!'
|
||||
|
||||
# Cleared Style
|
||||
# Default: 'Cleared your particles!'
|
||||
message-cleared-style: 'Your style has been cleared!'
|
||||
|
||||
# You Can Use Styles
|
||||
# Default: 'You can use:'
|
||||
message-use-style: 'You can use:'
|
||||
# Default: '&aYour style has been cleared!'
|
||||
message-cleared-style: '&aYour style has been cleared!'
|
||||
|
||||
# Invalid Style Type
|
||||
# Default: 'Invalid style type!'
|
||||
message-invalid-type-style: 'Invalid style type!'
|
||||
# Default: '&cInvalid style type! &b/pp styles &c| &b/pp style <type>'
|
||||
message-invalid-type-style: '&cInvalid style type! &b/pp styles &c| &b/pp style <type>'
|
||||
|
||||
# Style Command Usage
|
||||
# You should not change the text here, only the coloring
|
||||
# Default: '&b/pp style <type>'
|
||||
message-style-usage: '&b/pp style <type>'
|
||||
|
||||
# ------------ #
|
||||
# Data #
|
||||
# ------------ #
|
||||
|
||||
# Note Data Usage
|
||||
# Default: 'Your current effect requires note data.'
|
||||
message-note-data-usage: 'Your current effect requires note data.'
|
||||
|
||||
# Color Data Usage
|
||||
# Default: 'Your current effect requires color data.'
|
||||
message-color-data-usage: 'Your current effect requires color data.'
|
||||
|
||||
# Block Data Usage
|
||||
# Default: 'Your current effect requires block data.'
|
||||
message-block-data-usage: 'Your current effect requires block data.'
|
||||
|
||||
# Item Data Usage
|
||||
# Default: 'Your current effect requires item data.'
|
||||
message-item-data-usage: 'Your current effect requires item data.'
|
||||
# Data Usage
|
||||
# Default: '&eYour current effect requires &b{TYPE} &edata!'
|
||||
message-data-usage: '&eYour current effect requires &b{TYPE} &edata!'
|
||||
|
||||
# No Data Required
|
||||
# Default: 'Your current effect does not use any data.'
|
||||
message-no-data-usage: 'Your current effect does not use any data.'
|
||||
# Default: '&eYour current effect does not use any data!'
|
||||
message-no-data-usage: '&eYour current effect does not use any data!'
|
||||
|
||||
# Note Data Applied
|
||||
# Default: 'Your note data has been applied!'
|
||||
message-note-data-applied: 'Your note data has been applied!'
|
||||
# Data Applied
|
||||
# Default: '&aYour &b{TYPE} &adata has been applied!'
|
||||
message-data-applied: '&aYour &b{TYPE} &adata has been applied!'
|
||||
|
||||
# Color Data Applied
|
||||
# Default: 'Your color data has been applied!'
|
||||
message-color-data-applied: 'Your color data has been applied!'
|
||||
# Invalid Data Arguments
|
||||
# Default: '&cInvalid &b{TYPE} &cdata arguments!'
|
||||
message-data-invalid-arguments: '&cInvalid &b{TYPE} &cdata arguments!'
|
||||
|
||||
# Block Data Applied
|
||||
# Default: 'Your block data has been applied!'
|
||||
message-block-data-applied: 'Your block data has been applied!'
|
||||
# Unknown Material
|
||||
# Default: '&cThe {TYPE} name you supplied is invalid!'
|
||||
message-data-material-unknown: '&cThe &b{TYPE} &cname you supplied is invalid!'
|
||||
|
||||
# Item Data Applied
|
||||
# Default: 'Your item data has been applied!'
|
||||
message-item-data-applied: 'Your item data has been applied!'
|
||||
# Mismatched Material
|
||||
# Default: '&cThe material supplied is not of type &b{TYPE}&c!'
|
||||
message-data-material-mismatch: '&cThe material supplied is not of type &b{TYPE}&c!'
|
||||
|
||||
# Invalid Note Data Arguments
|
||||
# Default: 'Invalid note data arguments!'
|
||||
message-note-data-invalid-arguments: 'Invalid note data arguments!'
|
||||
# Note Data Usage
|
||||
# You should not change the text here, only the coloring
|
||||
# Default: '&b/pp data <0-23>'
|
||||
message-note-data-usage: '&b/pp data <0-23>'
|
||||
|
||||
# Invalid Color Data Arguments
|
||||
# Default: 'Invalid color data arguments!'
|
||||
message-color-data-invalid-arguments: 'Invalid color data arguments!'
|
||||
# Color Data Usage
|
||||
# You should not change the text here, only the coloring
|
||||
# Default: '&b/pp data <0-255> <0-255> <0-255>'
|
||||
message-color-data-usage: '&b/pp data <0-255> <0-255> <0-255>'
|
||||
|
||||
# Invalid Block Data Arguments
|
||||
# Default: 'Invalid block data arguments!'
|
||||
message-block-data-invalid-arguments: 'Invalid block data arguments!'
|
||||
# Item Data Usage
|
||||
# You should not change the text here, only the coloring
|
||||
# Default: '&b/pp data <itemName> <0-15>'
|
||||
message-item-data-usage: '&b/pp data <itemName> <0-15>'
|
||||
|
||||
# Invalid Item Data Arguments
|
||||
# Default: 'Invalid item data arguments!'
|
||||
message-item-data-invalid-arguments: 'Invalid item data arguments!'
|
||||
# Block Data Usage
|
||||
# You should not change the text here, only the coloring
|
||||
# Default: '&b/pp data <blockName> <0-15>'
|
||||
message-block-data-usage: '&b/pp data <blockName> <0-15>'
|
||||
|
||||
# Unknown Block Material
|
||||
# Default: 'The block name you supplied is invalid'
|
||||
message-block-data-material-unknown: 'The block name you supplied is invalid'
|
||||
# ---------------- #
|
||||
# Prefixes #
|
||||
# ---------------- #
|
||||
|
||||
# Unknown Item Material
|
||||
# Default: 'The item name you supplied is invalid'
|
||||
message-item-data-material-unknown: 'The item name you supplied is invalid'
|
||||
# You Can Use Particles
|
||||
# Default: '&eYou can use:'
|
||||
message-use: '&eYou can use:&b'
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
# Usage
|
||||
# Default: '&eUsage:'
|
||||
message-usage: '&eUsage:'
|
||||
|
||||
# Available Commands
|
||||
# Default: '&eAvailable commands: &beffect, effects, style, styles, data, reset, worlds, version, help'
|
||||
message-available-commands: '&eAvailable commands: &beffect, effects, style, styles, data, reset, worlds, version, help'
|
||||
|
||||
# Disabled Worlds
|
||||
# Default: '&eParticles are disabled in these worlds:&b'
|
||||
message-disabled-worlds: '&eParticles are disabled in these worlds:&b'
|
||||
|
||||
>>>>>>> refs/remotes/origin/master
|
||||
# ------------- #
|
||||
# Other #
|
||||
# ------------- #
|
||||
|
||||
# Usage
|
||||
# Default: 'Usage:'
|
||||
message-usage: 'Usage:'
|
||||
|
||||
# Reset
|
||||
# Default: 'Your effect, style, and data have all been reset!'
|
||||
message-reset: 'Your effect, style, and data have all been reset!'
|
||||
# Default: '&aYour effect, style, and data have all been reset!'
|
||||
message-reset: '&aYour effect, style, and data have all been reset!'
|
||||
|
||||
# Invalid Arguments
|
||||
# Default: 'Invalid arguments!'
|
||||
message-invalid-arguments: 'Invalid arguments!'
|
||||
|
||||
# Available Commands
|
||||
# Default: 'Available commands:'
|
||||
message-available-commands: 'Available commands:'
|
||||
# Default: '&cInvalid arguments! &a/pp help'
|
||||
message-invalid-arguments: '&cInvalid arguments! &b/pp help'
|
||||
|
||||
# Disabled Worlds None
|
||||
# Default: 'Particles are not disabled in any worlds!'
|
||||
message-disabled-worlds-none: 'Particles are not disabled in any worlds!'
|
||||
# Default: '&eParticles are not disabled in any worlds!'
|
||||
message-disabled-worlds-none: '&eParticles are not disabled in any worlds!'
|
||||
|
||||
# Disabled Worlds
|
||||
# Default: 'Particles are disabled in these worlds:'
|
||||
message-disabled-worlds: 'Particles are disabled in these worlds:'
|
||||
# Command Usage
|
||||
# Default: '&eCommand Usage: /pp <command>'
|
||||
message-command-usage: '&eCommand Usage: &b/pp <command>'
|
||||
|
||||
# ================================================================ #
|
||||
# DATABASE CONFIGURATION #
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
name: PlayerParticles
|
||||
main: com.esophose.playerparticles.PlayerParticles
|
||||
version: 4
|
||||
version: 4.1
|
||||
description: Make particles around players.
|
||||
author: Esophose
|
||||
website: http://dev.bukkit.org/bukkit-plugins/playerparticles/
|
||||
|
|
Loading…
Reference in a new issue