mirror of
https://github.com/TotalFreedomMC/PlayerParticles.git
synced 2025-08-05 12:03:00 +00:00
PlayerParticles v5.2 Update
Contains the remainder of updates related to PlayerParticles v5.2. See changelog.txt for details.
This commit is contained in:
parent
8b4c1fcd42
commit
eafd5520e1
9 changed files with 433 additions and 218 deletions
|
@ -1,5 +1,18 @@
|
||||||
== UPDATING WILL DELETE YOUR CONFIG.YML ==
|
== UPDATING WILL DELETE YOUR CONFIG.YML ==
|
||||||
* Create a backup of your config.yml if you wish to import all your old settings!
|
* Create a backup of your config.yml if you wish to import all your old settings!
|
||||||
|
=== v5.2 ===
|
||||||
|
* Added native support for Minecraft 1.13.x
|
||||||
|
* Still compatible with Minecraft 1.9 through Minecraft 1.12!
|
||||||
|
* Renamed a bunch of effects to their internal names, you will have to update your user permissions
|
||||||
|
* All saved player data on file and in the database (if enabled) will be deleted, it isn't backwards compatible with PlayerParticles v5.1 due to "the flattening"
|
||||||
|
* Permission checks are now only performed on command execution for efficiency
|
||||||
|
* Block/Item data in the GUI are now randomized
|
||||||
|
* Removed the 'data' tag from block/item data, it was removed in 1.13
|
||||||
|
* Added full tab-completion support
|
||||||
|
* Added all new 1.13 particle effects
|
||||||
|
* Alphabatized effects and styles in their respective info lists
|
||||||
|
* Fixed /pp data throwing an internal error on rare occasions
|
||||||
|
* Removed excessive console logging when database-enable is set to true
|
||||||
=== v5.1 ===
|
=== v5.1 ===
|
||||||
* Fix bug preventing the use of /pp effect, style, data, and reset from being used before a player has opened the GUI
|
* Fix bug preventing the use of /pp effect, style, data, and reset from being used before a player has opened the GUI
|
||||||
* Empty messages in config.yml will no longer display an error to the player, they won't be printed out at all
|
* Empty messages in config.yml will no longer display an error to the player, they won't be printed out at all
|
||||||
|
|
111
pom.xml
111
pom.xml
|
@ -31,6 +31,7 @@
|
||||||
<version>3.1.0</version>
|
<version>3.1.0</version>
|
||||||
<executions>
|
<executions>
|
||||||
<execution>
|
<execution>
|
||||||
|
<id>1.13</id>
|
||||||
<phase>package</phase>
|
<phase>package</phase>
|
||||||
<goals>
|
<goals>
|
||||||
<goal>shade</goal>
|
<goal>shade</goal>
|
||||||
|
@ -53,7 +54,115 @@
|
||||||
</excludes>
|
</excludes>
|
||||||
</filter>
|
</filter>
|
||||||
</filters>
|
</filters>
|
||||||
<outputFile>C:\Users\Esophose\Desktop\Spigot 1.13 Dev Server\plugins\update\PlayerParticles v5.2.jar</outputFile>
|
<outputFile>C:\Users\Esophose\Desktop\Spigot Dev Servers\1.13\plugins\update\PlayerParticles v5.2.jar</outputFile>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>1.12</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>com.zaxxer:HikariCP</include>
|
||||||
|
<include>org.slf4j:slf4j-api</include>
|
||||||
|
<include>org.slf4j:slf4j-nop</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<filters>
|
||||||
|
<filter>
|
||||||
|
<artifact>*:*</artifact>
|
||||||
|
<excludes>
|
||||||
|
<exclude>META-INF/*.SF</exclude>
|
||||||
|
<exclude>META-INF/*.DSA</exclude>
|
||||||
|
<exclude>META-INF/*.RSA</exclude>
|
||||||
|
</excludes>
|
||||||
|
</filter>
|
||||||
|
</filters>
|
||||||
|
<outputFile>C:\Users\Esophose\Desktop\Spigot Dev Servers\1.12\plugins\update\PlayerParticles v5.2.jar</outputFile>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>1.11</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>com.zaxxer:HikariCP</include>
|
||||||
|
<include>org.slf4j:slf4j-api</include>
|
||||||
|
<include>org.slf4j:slf4j-nop</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<filters>
|
||||||
|
<filter>
|
||||||
|
<artifact>*:*</artifact>
|
||||||
|
<excludes>
|
||||||
|
<exclude>META-INF/*.SF</exclude>
|
||||||
|
<exclude>META-INF/*.DSA</exclude>
|
||||||
|
<exclude>META-INF/*.RSA</exclude>
|
||||||
|
</excludes>
|
||||||
|
</filter>
|
||||||
|
</filters>
|
||||||
|
<outputFile>C:\Users\Esophose\Desktop\Spigot Dev Servers\1.11\plugins\update\PlayerParticles v5.2.jar</outputFile>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>1.10</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>com.zaxxer:HikariCP</include>
|
||||||
|
<include>org.slf4j:slf4j-api</include>
|
||||||
|
<include>org.slf4j:slf4j-nop</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<filters>
|
||||||
|
<filter>
|
||||||
|
<artifact>*:*</artifact>
|
||||||
|
<excludes>
|
||||||
|
<exclude>META-INF/*.SF</exclude>
|
||||||
|
<exclude>META-INF/*.DSA</exclude>
|
||||||
|
<exclude>META-INF/*.RSA</exclude>
|
||||||
|
</excludes>
|
||||||
|
</filter>
|
||||||
|
</filters>
|
||||||
|
<outputFile>C:\Users\Esophose\Desktop\Spigot Dev Servers\1.10\plugins\update\PlayerParticles v5.2.jar</outputFile>
|
||||||
|
</configuration>
|
||||||
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>1.9</id>
|
||||||
|
<phase>package</phase>
|
||||||
|
<goals>
|
||||||
|
<goal>shade</goal>
|
||||||
|
</goals>
|
||||||
|
<configuration>
|
||||||
|
<artifactSet>
|
||||||
|
<includes>
|
||||||
|
<include>com.zaxxer:HikariCP</include>
|
||||||
|
<include>org.slf4j:slf4j-api</include>
|
||||||
|
<include>org.slf4j:slf4j-nop</include>
|
||||||
|
</includes>
|
||||||
|
</artifactSet>
|
||||||
|
<filters>
|
||||||
|
<filter>
|
||||||
|
<artifact>*:*</artifact>
|
||||||
|
<excludes>
|
||||||
|
<exclude>META-INF/*.SF</exclude>
|
||||||
|
<exclude>META-INF/*.DSA</exclude>
|
||||||
|
<exclude>META-INF/*.RSA</exclude>
|
||||||
|
</excludes>
|
||||||
|
</filter>
|
||||||
|
</filters>
|
||||||
|
<outputFile>C:\Users\Esophose\Desktop\Spigot Dev Servers\1.9\plugins\update\PlayerParticles v5.2.jar</outputFile>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
|
|
|
@ -65,7 +65,7 @@ public class ParticleCommandCompleter implements TabCompleter {
|
||||||
}
|
}
|
||||||
} else if (args[0].equalsIgnoreCase("data")) {
|
} else if (args[0].equalsIgnoreCase("data")) {
|
||||||
PPlayer pplayer = PPlayerDataManager.getInstance().getPPlayer(((Player) sender).getUniqueId());
|
PPlayer pplayer = PPlayerDataManager.getInstance().getPPlayer(((Player) sender).getUniqueId());
|
||||||
if (pplayer == null && args.length == 2) {
|
if (pplayer == null) {
|
||||||
completions.add(ChatColor.stripColor(MessageType.NO_DATA_USAGE.getMessage()));
|
completions.add(ChatColor.stripColor(MessageType.NO_DATA_USAGE.getMessage()));
|
||||||
} else if (pplayer.getParticleEffect().hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA) && args.length == 2) {
|
} else if (pplayer.getParticleEffect().hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA) && args.length == 2) {
|
||||||
if (pplayer.getParticleEffect() == ParticleEffect.ITEM) {
|
if (pplayer.getParticleEffect() == ParticleEffect.ITEM) {
|
||||||
|
|
|
@ -76,10 +76,37 @@ public class PlayerParticles extends JavaPlugin {
|
||||||
Bukkit.getPluginManager().registerEvents(new PlayerParticlesGui(), this);
|
Bukkit.getPluginManager().registerEvents(new PlayerParticlesGui(), this);
|
||||||
double configVersion = getConfig().getDouble("version");
|
double configVersion = getConfig().getDouble("version");
|
||||||
if (configVersion < Double.parseDouble(getDescription().getVersion())) {
|
if (configVersion < Double.parseDouble(getDescription().getVersion())) {
|
||||||
|
// Make sure database information gets carried over between config updates
|
||||||
|
boolean databaseEnable = false;
|
||||||
|
String databaseHostname = "";
|
||||||
|
int databasePort = 3306;
|
||||||
|
String databaseName = "";
|
||||||
|
String databaseUserName = "";
|
||||||
|
String databaseUserPassword = "";
|
||||||
|
|
||||||
File configFile = new File(getDataFolder(), "config.yml");
|
File configFile = new File(getDataFolder(), "config.yml");
|
||||||
if (configFile.exists()) configFile.delete();
|
if (configFile.exists()) {
|
||||||
|
databaseEnable = getConfig().getBoolean("database-enable");
|
||||||
|
databaseHostname = getConfig().getString("database-hostname");
|
||||||
|
databasePort = getConfig().getInt("database-port");
|
||||||
|
databaseName = getConfig().getString("database-name");
|
||||||
|
databaseUserName = getConfig().getString("database-user-name");
|
||||||
|
databaseUserPassword = getConfig().getString("database-user-password");
|
||||||
|
if (databaseEnable) { // @formatter:off
|
||||||
|
getLogger().warning("== WARNING == The PlayerParticles database configuration was detected as database-enable=true. " +
|
||||||
|
"The database configuration has been loaded this time for critical schema updates, but has also been DELETED from the config.yml! " +
|
||||||
|
"This needs to be replaced or else the plugin wont connect to the database on its next load!"); // @formatter:on
|
||||||
|
}
|
||||||
|
configFile.delete();
|
||||||
|
}
|
||||||
saveDefaultConfig();
|
saveDefaultConfig();
|
||||||
reloadConfig();
|
reloadConfig();
|
||||||
|
getConfig().set("database-enable", databaseEnable);
|
||||||
|
getConfig().set("database-hostname", databaseHostname);
|
||||||
|
getConfig().set("database-port", databasePort);
|
||||||
|
getConfig().set("database-name", databaseName);
|
||||||
|
getConfig().set("database-user-name", databaseUserName);
|
||||||
|
getConfig().set("database-user-password", databaseUserPassword);
|
||||||
getLogger().warning("The config.yml has been updated to v" + getDescription().getVersion() + "!");
|
getLogger().warning("The config.yml has been updated to v" + getDescription().getVersion() + "!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -167,7 +194,6 @@ public class PlayerParticles extends JavaPlugin {
|
||||||
statement.addBatch("DROP TABLE pp_data_block");
|
statement.addBatch("DROP TABLE pp_data_block");
|
||||||
statement.addBatch("DROP TABLE pp_data_color");
|
statement.addBatch("DROP TABLE pp_data_color");
|
||||||
statement.addBatch("DROP TABLE pp_data_note");
|
statement.addBatch("DROP TABLE pp_data_note");
|
||||||
statement.executeBatch();
|
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
getLogger().info("Failed to connect to the MySQL Database! Check to see if your login information is correct!");
|
getLogger().info("Failed to connect to the MySQL Database! Check to see if your login information is correct!");
|
||||||
getLogger().info("Additional information: " + e.getMessage());
|
getLogger().info("Additional information: " + e.getMessage());
|
||||||
|
|
|
@ -18,18 +18,38 @@ public class ColorData {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the DyeColor
|
||||||
|
*
|
||||||
|
* @return The DyeColor
|
||||||
|
*/
|
||||||
public DyeColor getDyeColor() {
|
public DyeColor getDyeColor() {
|
||||||
return this.dyeColor;
|
return this.dyeColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the Material representing this color
|
||||||
|
*
|
||||||
|
* @return The Material
|
||||||
|
*/
|
||||||
public Material getMaterial() {
|
public Material getMaterial() {
|
||||||
return this.material;
|
return this.material;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the OrdinaryColor representing this color
|
||||||
|
*
|
||||||
|
* @return The OrdinaryColor
|
||||||
|
*/
|
||||||
public OrdinaryColor getOrdinaryColor() {
|
public OrdinaryColor getOrdinaryColor() {
|
||||||
return this.ordinaryColor;
|
return this.ordinaryColor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of this color
|
||||||
|
*
|
||||||
|
* @return The name of this color
|
||||||
|
*/
|
||||||
public String getName() {
|
public String getName() {
|
||||||
return this.name;
|
return this.name;
|
||||||
}
|
}
|
||||||
|
|
|
@ -13,6 +13,7 @@ import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.Random;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
|
@ -20,6 +21,7 @@ import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.Particle;
|
||||||
import org.bukkit.SkullType;
|
import org.bukkit.SkullType;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
@ -95,10 +97,11 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener {
|
||||||
private static int rainbowColorsIndex = 0;
|
private static int rainbowColorsIndex = 0;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 28 of each block/item Materials for block/item data
|
* Cached material data
|
||||||
*/
|
*/
|
||||||
private static Material[] blockMaterials;
|
private static final Random RANDOM = new Random();
|
||||||
private static Material[] itemMaterials;
|
private static List<Material> BLOCK_MATERIALS = new ArrayList<Material>();
|
||||||
|
private static List<Material> ITEM_MATERIALS = new ArrayList<Material>();
|
||||||
|
|
||||||
static { // @formatter:off
|
static { // @formatter:off
|
||||||
colorMapping = new ColorData[] {
|
colorMapping = new ColorData[] {
|
||||||
|
@ -116,7 +119,7 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener {
|
||||||
new ColorData(DyeColor.BROWN, ParticleUtils.closestMatch("COCOA_BEANS"), new OrdinaryColor(139, 69, 19), ChatColor.GOLD + "brown"),
|
new ColorData(DyeColor.BROWN, ParticleUtils.closestMatch("COCOA_BEANS"), new OrdinaryColor(139, 69, 19), ChatColor.GOLD + "brown"),
|
||||||
new ColorData(DyeColor.BLACK, ParticleUtils.closestMatch("INK_SAC"), new OrdinaryColor(0, 0, 0), ChatColor.DARK_GRAY + "black"),
|
new ColorData(DyeColor.BLACK, ParticleUtils.closestMatch("INK_SAC"), new OrdinaryColor(0, 0, 0), ChatColor.DARK_GRAY + "black"),
|
||||||
new ColorData(DyeColor.GRAY, ParticleUtils.closestMatch("GRAY_DYE"), new OrdinaryColor(128, 128, 128), ChatColor.DARK_GRAY + "gray"),
|
new ColorData(DyeColor.GRAY, ParticleUtils.closestMatch("GRAY_DYE"), new OrdinaryColor(128, 128, 128), ChatColor.DARK_GRAY + "gray"),
|
||||||
new ColorData(DyeColor.getByColor(Color.SILVER), ParticleUtils.closestMatch("LIGHT_GRAY_DYE"), new OrdinaryColor(192, 192, 192), ChatColor.GRAY + "light gray"),
|
new ColorData(DyeColor.getByDyeData((byte)7), ParticleUtils.closestMatch("LIGHT_GRAY_DYE"), new OrdinaryColor(192, 192, 192), ChatColor.GRAY + "light gray"),
|
||||||
new ColorData(DyeColor.WHITE, ParticleUtils.closestMatch("BONE_MEAL"), new OrdinaryColor(255, 255, 255), ChatColor.WHITE + "white"),
|
new ColorData(DyeColor.WHITE, ParticleUtils.closestMatch("BONE_MEAL"), new OrdinaryColor(255, 255, 255), ChatColor.WHITE + "white"),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -130,68 +133,20 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener {
|
||||||
DyeColor.PURPLE
|
DyeColor.PURPLE
|
||||||
};
|
};
|
||||||
|
|
||||||
// All materials contain their > 1.13 name, followed by their legacy name, if applicable
|
Inventory testingInventory = Bukkit.createInventory(null, 9);
|
||||||
blockMaterials = new Material[] {
|
for (Material mat : Material.values()) {
|
||||||
ParticleUtils.closestMatchWithFallback("STONE"),
|
// Verify an ItemStack of the material can be placed into an inventory. In 1.12 and up this can easily be checked with mat.isItem(), but that doesn't exist pre 1.12
|
||||||
ParticleUtils.closestMatchWithFallback("GRASS"),
|
testingInventory.clear();
|
||||||
ParticleUtils.closestMatchWithFallback("TNT"),
|
testingInventory.setItem(0, new ItemStack(mat, 1));
|
||||||
ParticleUtils.closestMatchWithFallback("COBBLESTONE"),
|
ItemStack itemStack = testingInventory.getItem(0);
|
||||||
ParticleUtils.closestMatchWithFallback("OAK_WOOD", "WOOD"),
|
if (itemStack != null) {
|
||||||
ParticleUtils.closestMatchWithFallback("BEDROCK"),
|
if (mat.isBlock()) {
|
||||||
ParticleUtils.closestMatchWithFallback("SAND"),
|
BLOCK_MATERIALS.add(mat);
|
||||||
ParticleUtils.closestMatchWithFallback("OAK_LOG", "LOG"),
|
} else if (!mat.isBlock()) {
|
||||||
ParticleUtils.closestMatchWithFallback("SPONGE"),
|
ITEM_MATERIALS.add(mat);
|
||||||
ParticleUtils.closestMatchWithFallback("GLASS"),
|
}
|
||||||
ParticleUtils.closestMatchWithFallback("WHITE_WOOL", "WOOL"),
|
}
|
||||||
ParticleUtils.closestMatchWithFallback("IRON_BLOCK"),
|
}
|
||||||
ParticleUtils.closestMatchWithFallback("GOLD_BLOCK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("DIAMOND_BLOCK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("EMERALD_BLOCK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("COAL_BLOCK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("REDSTONE_BLOCK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("BOOKSHELF"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("ICE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("CLAY"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("PUMPKIN"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("MELON", "MELON_BLOCK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("NETHERRACK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("SOUL_SAND"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("GLOWSTONE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("NETHER_BRICKS"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("END_STONE", "ENDER_STONE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("PRISMARINE")
|
|
||||||
};
|
|
||||||
|
|
||||||
itemMaterials = new Material[] {
|
|
||||||
ParticleUtils.closestMatchWithFallback("COAL"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("IRON_INGOT"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("GOLD_INGOT"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("REDSTONE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("EMERALD"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("QUARTZ"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("BRICK", "CLAY_BRICK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("GLOWSTONE_DUST"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("SUGAR_CANE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("FLINT"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("POTATO", "POTATO_ITEM"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("CARROT", "CARROT_ITEM"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("SNOWBALL", "SNOW_BALL"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("BONE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("ENDER_PEARL"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("BLAZE_POWDER"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("NETHER_WART", "NETHER_STALK"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("FIRE_CHARGE", "FIREBALL"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("CHORUS_FRUIT"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("PRISMARINE_CRYSTALS"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("GUNPOWDER", "SULPHUR"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("APPLE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("MELON"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("COOKIE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("IRON_SHOVEL", "IRON_SPADE"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("COMPASS"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("CLOCK", "WATCH"),
|
|
||||||
ParticleUtils.closestMatchWithFallback("NAME_TAG")
|
|
||||||
};
|
|
||||||
} // @formatter:on
|
} // @formatter:on
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -207,23 +162,28 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener {
|
||||||
effectIcons = new HashMap<String, Material>();
|
effectIcons = new HashMap<String, Material>();
|
||||||
styleIcons = new HashMap<String, Material>();
|
styleIcons = new HashMap<String, Material>();
|
||||||
|
|
||||||
defaultMenuIcons[0] = ParticleUtils.closestMatch(config.getString("gui-icon.main-menu.EFFECT"));
|
defaultMenuIcons[0] = ParticleUtils.closestMatchWithFallback(config.getString("gui-icon.main-menu.EFFECT"));
|
||||||
defaultMenuIcons[1] = ParticleUtils.closestMatch(config.getString("gui-icon.main-menu.STYLE"));
|
defaultMenuIcons[1] = ParticleUtils.closestMatchWithFallback(config.getString("gui-icon.main-menu.STYLE"));
|
||||||
defaultMenuIcons[2] = ParticleUtils.closestMatch(config.getString("gui-icon.main-menu.DATA"));
|
defaultMenuIcons[2] = ParticleUtils.closestMatchWithFallback(config.getString("gui-icon.main-menu.DATA"));
|
||||||
for (int i = 0; i < defaultMenuIcons.length; i++)
|
|
||||||
if (defaultMenuIcons[i] == null) defaultMenuIcons[i] = Material.BARRIER;
|
// Grab a different effect icon set based on if the Minecraft version is >= 1.13 or not
|
||||||
|
String legacy;
|
||||||
|
try {
|
||||||
|
Particle.valueOf("NAUTILUS");
|
||||||
|
legacy = "";
|
||||||
|
} catch (Exception ex) {
|
||||||
|
legacy = "-legacy";
|
||||||
|
}
|
||||||
|
|
||||||
for (ParticleEffect effect : ParticleEffect.getSupportedEffects()) {
|
for (ParticleEffect effect : ParticleEffect.getSupportedEffects()) {
|
||||||
String effectName = effect.name();
|
String effectName = effect.getName().toUpperCase();
|
||||||
Material iconMaterial = ParticleUtils.closestMatch(config.getString("gui-icon.effect." + effectName));
|
Material iconMaterial = ParticleUtils.closestMatchWithFallback(config.getString("gui-icon.effect" + legacy + "." + effectName));
|
||||||
if (iconMaterial == null) iconMaterial = Material.BARRIER; // Missing icon or invalid? Replace it with a barrier instead to fail safety.
|
|
||||||
effectIcons.put(effectName, iconMaterial);
|
effectIcons.put(effectName, iconMaterial);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (ParticleStyle style : ParticleStyleManager.getStyles()) {
|
for (ParticleStyle style : ParticleStyleManager.getStyles()) {
|
||||||
String styleName = style.getName().toUpperCase();
|
String styleName = style.getName().toUpperCase();
|
||||||
Material iconMaterial = ParticleUtils.closestMatch(config.getString("gui-icon.style." + styleName));
|
Material iconMaterial = ParticleUtils.closestMatchWithFallback(config.getString("gui-icon.style" + legacy + "." + styleName));
|
||||||
if (iconMaterial == null) iconMaterial = Material.BARRIER; // Missing icon or invalid? Replace it with a barrier instead to fail safety.
|
|
||||||
styleIcons.put(styleName, iconMaterial);
|
styleIcons.put(styleName, iconMaterial);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,6 +333,7 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener {
|
||||||
currentIconLore[2] = ChatColor.YELLOW + "Active Data: " + ChatColor.AQUA + p.getParticleDataString();
|
currentIconLore[2] = ChatColor.YELLOW + "Active Data: " + ChatColor.AQUA + p.getParticleDataString();
|
||||||
currentIconMeta.setLore(Arrays.asList(currentIconLore));
|
currentIconMeta.setLore(Arrays.asList(currentIconLore));
|
||||||
currentIconMeta.setOwner(player.getName());
|
currentIconMeta.setOwner(player.getName());
|
||||||
|
//currentIconMeta.setOwningPlayer(Bukkit.getOfflinePlayer(player.getUniqueId())); // This doesn't exist in 1.9
|
||||||
currentIcon.setItemMeta(currentIconMeta);
|
currentIcon.setItemMeta(currentIconMeta);
|
||||||
|
|
||||||
ItemStack effectIcon = new ItemStack(defaultMenuIcons[0], 1);
|
ItemStack effectIcon = new ItemStack(defaultMenuIcons[0], 1);
|
||||||
|
@ -510,43 +471,58 @@ public class PlayerParticlesGui extends BukkitRunnable implements Listener {
|
||||||
inventory.setItem(40, getItemForRainbowColorData(p.getColorData(), rainbowColors[rainbowColorsIndex]));
|
inventory.setItem(40, getItemForRainbowColorData(p.getColorData(), rainbowColors[rainbowColorsIndex]));
|
||||||
}
|
}
|
||||||
} else if (pe.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
|
} else if (pe.hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
|
||||||
|
List<Material> materialBag = new ArrayList<Material>();
|
||||||
|
int materialIndex = 0;
|
||||||
|
|
||||||
if (pe == ParticleEffect.ITEM) { // Item data
|
if (pe == ParticleEffect.ITEM) { // Item data
|
||||||
Material currentItemMaterial = p.getItemData().getMaterial();
|
Material currentItemMaterial = p.getItemData().getMaterial();
|
||||||
int itemMaterialIndex = 0;
|
|
||||||
|
while (materialBag.size() < 28) { // Grab 28 random materials that are an item
|
||||||
|
Material randomMaterial = ITEM_MATERIALS.get(RANDOM.nextInt(ITEM_MATERIALS.size()));
|
||||||
|
if (!materialBag.contains(randomMaterial))
|
||||||
|
materialBag.add(randomMaterial);
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 10; i <= 16; i++) { // Top row
|
for (int i = 10; i <= 16; i++) { // Top row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", itemMaterials[itemMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", materialBag.get(materialIndex)));
|
||||||
itemMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
for (int i = 19; i <= 25; i++) { // Middle 1 row
|
for (int i = 19; i <= 25; i++) { // Middle 1 row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", itemMaterials[itemMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", materialBag.get(materialIndex)));
|
||||||
itemMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
for (int i = 28; i <= 34; i++) { // Middle 2 row
|
for (int i = 28; i <= 34; i++) { // Middle 2 row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", itemMaterials[itemMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", materialBag.get(materialIndex)));
|
||||||
itemMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
for (int i = 37; i <= 43; i++) { // Bottom row
|
for (int i = 37; i <= 43; i++) { // Bottom row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", itemMaterials[itemMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentItemMaterial, "item", materialBag.get(materialIndex)));
|
||||||
itemMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
} else { // Block data
|
} else { // Block data
|
||||||
Material currentBlockMaterial = p.getBlockData().getMaterial();
|
Material currentBlockMaterial = p.getBlockData().getMaterial();
|
||||||
int blockMaterialIndex = 0;
|
|
||||||
|
while (materialBag.size() < 28) { // Grab 28 random materials that are an item
|
||||||
|
Material randomMaterial = BLOCK_MATERIALS.get(RANDOM.nextInt(BLOCK_MATERIALS.size()));
|
||||||
|
if (!materialBag.contains(randomMaterial))
|
||||||
|
materialBag.add(randomMaterial);
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 10; i <= 16; i++) { // Top row
|
for (int i = 10; i <= 16; i++) { // Top row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", blockMaterials[blockMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", materialBag.get(materialIndex)));
|
||||||
blockMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
for (int i = 19; i <= 25; i++) { // Middle 1 row
|
for (int i = 19; i <= 25; i++) { // Middle 1 row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", blockMaterials[blockMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", materialBag.get(materialIndex)));
|
||||||
blockMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
for (int i = 28; i <= 34; i++) { // Middle 2 row
|
for (int i = 28; i <= 34; i++) { // Middle 2 row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", blockMaterials[blockMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", materialBag.get(materialIndex)));
|
||||||
blockMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
for (int i = 37; i <= 43; i++) { // Bottom row
|
for (int i = 37; i <= 43; i++) { // Bottom row
|
||||||
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", blockMaterials[blockMaterialIndex]));
|
inventory.setItem(i, getItemForMaterialData(currentBlockMaterial, "block", materialBag.get(materialIndex)));
|
||||||
blockMaterialIndex++;
|
materialIndex++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ public enum ParticleEffect {
|
||||||
BARRIER("BARRIER", "BARRIER"),
|
BARRIER("BARRIER", "BARRIER"),
|
||||||
BLOCK("BLOCK_CRACK", "BLOCK_CRACK", ParticleProperty.REQUIRES_MATERIAL_DATA),
|
BLOCK("BLOCK_CRACK", "BLOCK_CRACK", ParticleProperty.REQUIRES_MATERIAL_DATA),
|
||||||
BUBBLE("WATER_BUBBLE", "WATER_BUBBLE"),
|
BUBBLE("WATER_BUBBLE", "WATER_BUBBLE"),
|
||||||
//BUBBLE_COLUMN_UP("BUBBLE_COLUMN_UP", null), // Identical to bubble
|
BUBBLE_COLUMN_UP("BUBBLE_COLUMN_UP", null),
|
||||||
BUBBLE_POP("BUBBLE_POP", null),
|
BUBBLE_POP("BUBBLE_POP", null),
|
||||||
CLOUD("CLOUD", "CLOUD"),
|
CLOUD("CLOUD", "CLOUD"),
|
||||||
CRIT("CRIT", "CRIT"),
|
CRIT("CRIT", "CRIT"),
|
||||||
|
@ -56,6 +56,7 @@ public enum ParticleEffect {
|
||||||
END_ROD("END_ROD", "END_ROD"),
|
END_ROD("END_ROD", "END_ROD"),
|
||||||
ENTITY_EFFECT("SPELL_MOB", "SPELL_MOB", ParticleProperty.COLORABLE),
|
ENTITY_EFFECT("SPELL_MOB", "SPELL_MOB", ParticleProperty.COLORABLE),
|
||||||
EXPLOSION("EXPLOSION_LARGE", "EXPLOSION_LARGE"),
|
EXPLOSION("EXPLOSION_LARGE", "EXPLOSION_LARGE"),
|
||||||
|
EXPLOSION_EMITTER("EXPLOSION_HUGE", "EXPLOSION_HUGE"),
|
||||||
FALLING_DUST("FALLING_DUST", "FALLING_DUST", ParticleProperty.REQUIRES_MATERIAL_DATA),
|
FALLING_DUST("FALLING_DUST", "FALLING_DUST", ParticleProperty.REQUIRES_MATERIAL_DATA),
|
||||||
FIREWORK("FIREWORKS_SPARK", "FIREWORKS_SPARK"),
|
FIREWORK("FIREWORKS_SPARK", "FIREWORKS_SPARK"),
|
||||||
FISHING("WATER_WAKE", "WATER_WAKE"),
|
FISHING("WATER_WAKE", "WATER_WAKE"),
|
||||||
|
@ -63,7 +64,6 @@ public enum ParticleEffect {
|
||||||
FOOTSTEP(null, "FOOTSTEP"), // Removed in Minecraft 1.13 :(
|
FOOTSTEP(null, "FOOTSTEP"), // Removed in Minecraft 1.13 :(
|
||||||
HAPPY_VILLAGER("VILLAGER_HAPPY", "VILLAGER_HAPPY"),
|
HAPPY_VILLAGER("VILLAGER_HAPPY", "VILLAGER_HAPPY"),
|
||||||
HEART("HEART", "HEART"),
|
HEART("HEART", "HEART"),
|
||||||
EXPLOSION_EMITTER("EXPLOSION_HUGE", "EXPLOSION_HUGE"),
|
|
||||||
INSTANT_EFFECT("SPELL_INSTANT", "SPELL_INSTANT"),
|
INSTANT_EFFECT("SPELL_INSTANT", "SPELL_INSTANT"),
|
||||||
ITEM("ITEM_CRACK", "ITEM_CRACK", ParticleProperty.REQUIRES_MATERIAL_DATA),
|
ITEM("ITEM_CRACK", "ITEM_CRACK", ParticleProperty.REQUIRES_MATERIAL_DATA),
|
||||||
ITEM_SLIME("SLIME", "SLIME"),
|
ITEM_SLIME("SLIME", "SLIME"),
|
||||||
|
@ -90,12 +90,13 @@ public enum ParticleEffect {
|
||||||
private static final int PARTICLE_DISPLAY_RANGE_SQUARED = 36864; // (12 chunks * 16 blocks per chunk)^2
|
private static final int PARTICLE_DISPLAY_RANGE_SQUARED = 36864; // (12 chunks * 16 blocks per chunk)^2
|
||||||
private static final Map<String, ParticleEffect> NAME_MAP = new HashMap<String, ParticleEffect>();
|
private static final Map<String, ParticleEffect> NAME_MAP = new HashMap<String, ParticleEffect>();
|
||||||
private static boolean VERSION_13; // This is a particle unique to Minecraft 1.13, this is a reliable way of telling what server version is running
|
private static boolean VERSION_13; // This is a particle unique to Minecraft 1.13, this is a reliable way of telling what server version is running
|
||||||
private static Constructor<?> DUSTOPTIONS_CONSTRUCTOR;
|
private static Constructor<?> DustOptions_CONSTRUCTOR;
|
||||||
private static Method CREATEBLOCKDATA_METHOD;
|
private static Method createBlockData_METHOD;
|
||||||
private final Particle internalEnum;
|
private final Particle internalEnum;
|
||||||
private final List<ParticleProperty> properties;
|
private final List<ParticleProperty> properties;
|
||||||
|
|
||||||
// Initialize map for quick name and id lookup
|
// Initialize map for quick name and id lookup
|
||||||
|
// Initialize Minecraft 1.13 related variables
|
||||||
static {
|
static {
|
||||||
for (ParticleEffect effect : values()) {
|
for (ParticleEffect effect : values()) {
|
||||||
NAME_MAP.put(effect.getName(), effect);
|
NAME_MAP.put(effect.getName(), effect);
|
||||||
|
@ -103,10 +104,11 @@ public enum ParticleEffect {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
VERSION_13 = Particle.valueOf("NAUTILUS") != null;
|
VERSION_13 = Particle.valueOf("NAUTILUS") != null;
|
||||||
DUSTOPTIONS_CONSTRUCTOR = Particle.REDSTONE.getDataType().getConstructor(Color.class, float.class);
|
DustOptions_CONSTRUCTOR = Particle.REDSTONE.getDataType().getConstructor(Color.class, float.class);
|
||||||
CREATEBLOCKDATA_METHOD = Material.class.getMethod("createBlockData");
|
createBlockData_METHOD = Material.class.getMethod("createBlockData");
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
DUSTOPTIONS_CONSTRUCTOR = null;
|
DustOptions_CONSTRUCTOR = null;
|
||||||
|
createBlockData_METHOD = null;
|
||||||
VERSION_13 = false;
|
VERSION_13 = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -259,7 +261,7 @@ public enum ParticleEffect {
|
||||||
OrdinaryColor dustColor = (OrdinaryColor)color;
|
OrdinaryColor dustColor = (OrdinaryColor)color;
|
||||||
Object dustData = null;
|
Object dustData = null;
|
||||||
try { // The DustData class doesn't exist in Minecraft versions less than 1.13... so this is disgusting... but it works great
|
try { // The DustData class doesn't exist in Minecraft versions less than 1.13... so this is disgusting... but it works great
|
||||||
dustData = DUSTOPTIONS_CONSTRUCTOR.newInstance(Color.fromRGB(dustColor.getRed(), dustColor.getGreen(), dustColor.getBlue()), 1); // Wait, you can change the size of these now??? AWESOME! I might implement this in the future!
|
dustData = DustOptions_CONSTRUCTOR.newInstance(Color.fromRGB(dustColor.getRed(), dustColor.getGreen(), dustColor.getBlue()), 1); // Wait, you can change the size of these now??? AWESOME! I might implement this in the future!
|
||||||
} catch (Exception e) { }
|
} catch (Exception e) { }
|
||||||
|
|
||||||
for (Player player : getPlayersInRange(center)) {
|
for (Player player : getPlayersInRange(center)) {
|
||||||
|
@ -297,7 +299,7 @@ public enum ParticleEffect {
|
||||||
Object extraData = null;
|
Object extraData = null;
|
||||||
if (internalEnum.getDataType().getTypeName().equals("org.bukkit.block.data.BlockData")) {
|
if (internalEnum.getDataType().getTypeName().equals("org.bukkit.block.data.BlockData")) {
|
||||||
try { // The Material.createBlockData() method doesn't exist in Minecraft versions less than 1.13... so this is disgusting... but it works great
|
try { // The Material.createBlockData() method doesn't exist in Minecraft versions less than 1.13... so this is disgusting... but it works great
|
||||||
extraData = CREATEBLOCKDATA_METHOD.invoke(data.getMaterial());
|
extraData = createBlockData_METHOD.invoke(data.getMaterial());
|
||||||
} catch (Exception e) { }
|
} catch (Exception e) { }
|
||||||
} else if (internalEnum.getDataType() == ItemStack.class) {
|
} else if (internalEnum.getDataType() == ItemStack.class) {
|
||||||
extraData = new ItemStack(data.getMaterial());
|
extraData = new ItemStack(data.getMaterial());
|
||||||
|
@ -350,8 +352,7 @@ public enum ParticleEffect {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the particle data for effects like
|
* Represents the particle data for effects like
|
||||||
* {@link ParticleEffect#ITEM}, {@link ParticleEffect#BLOCK_CRACK},
|
* {@link ParticleEffect#ITEM}, {@link ParticleEffect#BLOCK}, and {@link ParticleEffect#FALLING_DUST}
|
||||||
* {@link ParticleEffect#BLOCK_DUST}, and {@link ParticleEffect#FALLING_DUST}
|
|
||||||
* <p>
|
* <p>
|
||||||
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
||||||
* same usage conditions
|
* same usage conditions
|
||||||
|
@ -382,7 +383,7 @@ public enum ParticleEffect {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the item data for the {@link ParticleEffect#ITEM_CRACK} effect
|
* Represents the item data for the {@link ParticleEffect#ITEM} effect
|
||||||
* <p>
|
* <p>
|
||||||
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
||||||
* same usage conditions
|
* same usage conditions
|
||||||
|
@ -402,8 +403,8 @@ public enum ParticleEffect {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the block data for the {@link ParticleEffect#BLOCK_CRACK} and
|
* Represents the block data for the {@link ParticleEffect#BLOCK} and
|
||||||
* {@link ParticleEffect#BLOCK_DUST} effects
|
* {@link ParticleEffect#FALLING_DUST} effects
|
||||||
* <p>
|
* <p>
|
||||||
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
||||||
* same usage conditions
|
* same usage conditions
|
||||||
|
@ -416,7 +417,6 @@ public enum ParticleEffect {
|
||||||
* Construct a new block data
|
* Construct a new block data
|
||||||
*
|
*
|
||||||
* @param material Material of the block
|
* @param material Material of the block
|
||||||
* @param data Data value of the block
|
|
||||||
* @throws IllegalArgumentException If the material is not a block
|
* @throws IllegalArgumentException If the material is not a block
|
||||||
*/
|
*/
|
||||||
public BlockData(Material material) throws IllegalArgumentException {
|
public BlockData(Material material) throws IllegalArgumentException {
|
||||||
|
@ -428,8 +428,8 @@ public enum ParticleEffect {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the color for effects like {@link ParticleEffect#MOB_SPELL},
|
* Represents the color for effects like {@link ParticleEffect#ENTITY_EFFECT},
|
||||||
* {@link ParticleEffect#MOB_SPELL_AMBIENT}, {@link ParticleEffect#RED_DUST}
|
* {@link ParticleEffect#AMBIENT_ENTITY_EFFECT}, {@link ParticleEffect#DUST}
|
||||||
* and {@link ParticleEffect#NOTE}
|
* and {@link ParticleEffect#NOTE}
|
||||||
* <p>
|
* <p>
|
||||||
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
||||||
|
@ -462,8 +462,8 @@ public enum ParticleEffect {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents the color for effects like {@link ParticleEffect#MOB_SPELL},
|
* Represents the color for effects like {@link ParticleEffect#ENTITY_EFFECT},
|
||||||
* {@link ParticleEffect#MOB_SPELL_AMBIENT} and {@link ParticleEffect#NOTE}
|
* {@link ParticleEffect#AMBIENT_ENTITY_EFFECT} and {@link ParticleEffect#NOTE}
|
||||||
* <p>
|
* <p>
|
||||||
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
* This class is part of the <b>ParticleEffect Library</b> and follows the
|
||||||
* same usage conditions
|
* same usage conditions
|
||||||
|
|
|
@ -14,61 +14,62 @@ public class DefaultStyles {
|
||||||
/**
|
/**
|
||||||
* All the styles that are available by default from this plugin
|
* All the styles that are available by default from this plugin
|
||||||
*/
|
*/
|
||||||
public static final ParticleStyle NONE = new ParticleStyleNone();
|
|
||||||
public static final ParticleStyle BEAM = new ParticleStyleBeam();
|
|
||||||
public static final ParticleStyle HALO = new ParticleStyleHalo();
|
|
||||||
public static final ParticleStyle POINT = new ParticleStylePoint();
|
|
||||||
public static final ParticleStyle MOVE = new ParticleStyleMove();
|
|
||||||
public static final ParticleStyle SPIN = new ParticleStyleSpin();
|
|
||||||
public static final ParticleStyle QUADHELIX = new ParticleStyleQuadhelix();
|
|
||||||
public static final ParticleStyle ORBIT = new ParticleStyleOrbit();
|
|
||||||
public static final ParticleStyle FEET = new ParticleStyleFeet();
|
|
||||||
public static final ParticleStyle CUBE = new ParticleStyleCube();
|
|
||||||
public static final ParticleStyle ARROWS = new ParticleStyleArrows();
|
public static final ParticleStyle ARROWS = new ParticleStyleArrows();
|
||||||
public static final ParticleStyle SPIRAL = new ParticleStyleSpiral();
|
public static final ParticleStyle BEAM = new ParticleStyleBeam();
|
||||||
public static final ParticleStyle THICK = new ParticleStyleThick();
|
|
||||||
public static final ParticleStyle WINGS = new ParticleStyleWings();
|
|
||||||
public static final ParticleStyle SPHERE = new ParticleStyleSphere();
|
|
||||||
public static final ParticleStyle SWORDS = new ParticleStyleSwords();
|
|
||||||
public static final ParticleStyle HURT = new ParticleStyleHurt();
|
|
||||||
public static final ParticleStyle BLOCKPLACE = new ParticleStyleBlockPlace();
|
|
||||||
public static final ParticleStyle BLOCKBREAK = new ParticleStyleBlockBreak();
|
public static final ParticleStyle BLOCKBREAK = new ParticleStyleBlockBreak();
|
||||||
public static final ParticleStyle BLOCKEDIT = new ParticleStyleBlockEdit();
|
public static final ParticleStyle BLOCKEDIT = new ParticleStyleBlockEdit();
|
||||||
|
public static final ParticleStyle BLOCKPLACE = new ParticleStyleBlockPlace();
|
||||||
|
public static final ParticleStyle CUBE = new ParticleStyleCube();
|
||||||
|
public static final ParticleStyle FEET = new ParticleStyleFeet();
|
||||||
|
public static final ParticleStyle HALO = new ParticleStyleHalo();
|
||||||
|
public static final ParticleStyle HURT = new ParticleStyleHurt();
|
||||||
|
public static final ParticleStyle MOVE = new ParticleStyleMove();
|
||||||
|
public static final ParticleStyle NONE = new ParticleStyleNone();
|
||||||
|
public static final ParticleStyle ORBIT = new ParticleStyleOrbit();
|
||||||
|
public static final ParticleStyle POINT = new ParticleStylePoint();
|
||||||
|
public static final ParticleStyle QUADHELIX = new ParticleStyleQuadhelix();
|
||||||
|
public static final ParticleStyle SPHERE = new ParticleStyleSphere();
|
||||||
|
public static final ParticleStyle SPIN = new ParticleStyleSpin();
|
||||||
|
public static final ParticleStyle SPIRAL = new ParticleStyleSpiral();
|
||||||
|
public static final ParticleStyle SWORDS = new ParticleStyleSwords();
|
||||||
|
public static final ParticleStyle THICK = new ParticleStyleThick();
|
||||||
|
public static final ParticleStyle WINGS = new ParticleStyleWings();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers all the default styles to the ParticleStyleManager
|
* Registers all the default styles to the ParticleStyleManager
|
||||||
|
* Registered in alphabetical order
|
||||||
*/
|
*/
|
||||||
public static void registerStyles() {
|
public static void registerStyles() {
|
||||||
ParticleStyleManager.registerStyle(NONE);
|
|
||||||
ParticleStyleManager.registerStyle(BEAM);
|
|
||||||
ParticleStyleManager.registerStyle(HALO);
|
|
||||||
ParticleStyleManager.registerStyle(POINT);
|
|
||||||
ParticleStyleManager.registerCustomHandledStyle(MOVE);
|
|
||||||
ParticleStyleManager.registerStyle(SPIN);
|
|
||||||
ParticleStyleManager.registerStyle(QUADHELIX);
|
|
||||||
ParticleStyleManager.registerStyle(ORBIT);
|
|
||||||
ParticleStyleManager.registerStyle(FEET);
|
|
||||||
ParticleStyleManager.registerStyle(CUBE);
|
|
||||||
ParticleStyleManager.registerStyle(ARROWS);
|
ParticleStyleManager.registerStyle(ARROWS);
|
||||||
ParticleStyleManager.registerStyle(SPIRAL);
|
ParticleStyleManager.registerStyle(BEAM);
|
||||||
ParticleStyleManager.registerStyle(THICK);
|
|
||||||
ParticleStyleManager.registerStyle(WINGS);
|
|
||||||
ParticleStyleManager.registerStyle(SPHERE);
|
|
||||||
ParticleStyleManager.registerCustomHandledStyle(SWORDS);
|
|
||||||
ParticleStyleManager.registerCustomHandledStyle(HURT);
|
|
||||||
ParticleStyleManager.registerCustomHandledStyle(BLOCKPLACE);
|
|
||||||
ParticleStyleManager.registerCustomHandledStyle(BLOCKBREAK);
|
ParticleStyleManager.registerCustomHandledStyle(BLOCKBREAK);
|
||||||
ParticleStyleManager.registerCustomHandledStyle(BLOCKEDIT);
|
ParticleStyleManager.registerCustomHandledStyle(BLOCKEDIT);
|
||||||
|
ParticleStyleManager.registerCustomHandledStyle(BLOCKPLACE);
|
||||||
|
ParticleStyleManager.registerStyle(CUBE);
|
||||||
|
ParticleStyleManager.registerStyle(FEET);
|
||||||
|
ParticleStyleManager.registerStyle(HALO);
|
||||||
|
ParticleStyleManager.registerCustomHandledStyle(HURT);
|
||||||
|
ParticleStyleManager.registerCustomHandledStyle(MOVE);
|
||||||
|
ParticleStyleManager.registerStyle(NONE);
|
||||||
|
ParticleStyleManager.registerStyle(ORBIT);
|
||||||
|
ParticleStyleManager.registerStyle(POINT);
|
||||||
|
ParticleStyleManager.registerStyle(QUADHELIX);
|
||||||
|
ParticleStyleManager.registerStyle(SPHERE);
|
||||||
|
ParticleStyleManager.registerStyle(SPIN);
|
||||||
|
ParticleStyleManager.registerStyle(SPIRAL);
|
||||||
|
ParticleStyleManager.registerCustomHandledStyle(SWORDS);
|
||||||
|
ParticleStyleManager.registerStyle(THICK);
|
||||||
|
ParticleStyleManager.registerStyle(WINGS);
|
||||||
|
|
||||||
PluginManager manager = Bukkit.getPluginManager();
|
PluginManager manager = Bukkit.getPluginManager();
|
||||||
Plugin playerParticles = PlayerParticles.getPlugin();
|
Plugin playerParticles = PlayerParticles.getPlugin();
|
||||||
manager.registerEvents((Listener) MOVE, playerParticles);
|
|
||||||
manager.registerEvents((Listener) ARROWS, playerParticles);
|
manager.registerEvents((Listener) ARROWS, playerParticles);
|
||||||
manager.registerEvents((Listener) SWORDS, playerParticles);
|
|
||||||
manager.registerEvents((Listener) HURT, playerParticles);
|
|
||||||
manager.registerEvents((Listener) BLOCKPLACE, playerParticles);
|
|
||||||
manager.registerEvents((Listener) BLOCKBREAK, playerParticles);
|
manager.registerEvents((Listener) BLOCKBREAK, playerParticles);
|
||||||
|
manager.registerEvents((Listener) BLOCKPLACE, playerParticles);
|
||||||
manager.registerEvents((Listener) BLOCKEDIT, playerParticles);
|
manager.registerEvents((Listener) BLOCKEDIT, playerParticles);
|
||||||
|
manager.registerEvents((Listener) HURT, playerParticles);
|
||||||
|
manager.registerEvents((Listener) MOVE, playerParticles);
|
||||||
|
manager.registerEvents((Listener) SWORDS, playerParticles);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
192
src/config.yml
192
src/config.yml
|
@ -488,75 +488,145 @@ gui-icon:
|
||||||
EFFECT: BLAZE_POWDER
|
EFFECT: BLAZE_POWDER
|
||||||
STYLE: NETHER_STAR
|
STYLE: NETHER_STAR
|
||||||
DATA: BOOK
|
DATA: BOOK
|
||||||
effect:
|
effect: # 1.13 and up
|
||||||
NONE: THIN_GLASS
|
AMBIENT_ENTITY_EFFECT: BEACON
|
||||||
EXPLODE: SULPHUR
|
|
||||||
LARGE_EXPLODE: FIREBALL
|
|
||||||
HUGE_EXPLOSION: TNT
|
|
||||||
FIREWORKS_SPARK: FIREWORK
|
|
||||||
BUBBLE: GLASS
|
|
||||||
WAKE: BOAT
|
|
||||||
SUSPENDED: WATER_LILY
|
|
||||||
DEPTH_SUSPEND: BEDROCK
|
|
||||||
CRIT: IRON_SWORD
|
|
||||||
MAGIC_CRIT: NETHER_STALK
|
|
||||||
SMOKE: TORCH
|
|
||||||
LARGE_SMOKE: WEB
|
|
||||||
SPELL: GLASS_BOTTLE
|
|
||||||
INSTANT_SPELL: POTION
|
|
||||||
MOB_SPELL: GLOWSTONE_DUST
|
|
||||||
MOB_SPELL_AMBIENT: BEACON
|
|
||||||
WITCH_MAGIC: CAULDRON_ITEM
|
|
||||||
DRIP_WATER: WATER_BUCKET
|
|
||||||
DRIP_LAVA: LAVA_BUCKET
|
|
||||||
ANGRY_VILLAGER: IRON_DOOR
|
ANGRY_VILLAGER: IRON_DOOR
|
||||||
HAPPY_VILLAGER: WOOD_DOOR
|
|
||||||
NOTE: NOTE_BLOCK
|
|
||||||
PORTAL: OBSIDIAN
|
|
||||||
ENCHANTMENT_TABLE: ENCHANTMENT_TABLE
|
|
||||||
FLAME: BLAZE_POWDER
|
|
||||||
LAVA: MAGMA_CREAM
|
|
||||||
FOOTSTEP: GRASS
|
|
||||||
CLOUD: WOOL
|
|
||||||
RED_DUST: REDSTONE
|
|
||||||
SNOWBALL_POOF: SNOW_BALL
|
|
||||||
SNOW_SHOVEL: SNOW
|
|
||||||
SLIME: SLIME_BALL
|
|
||||||
HEART: RED_ROSE
|
|
||||||
BARRIER: BARRIER
|
BARRIER: BARRIER
|
||||||
ITEM_CRACK: STICK
|
BLOCK: STONE
|
||||||
BLOCK_CRACK: DEAD_BUSH
|
BUBBLE: BUBBLE_CORAL
|
||||||
BLOCK_DUST: SOUL_SAND
|
BUBBLE_COLUMN_UP: MAGMA_BLOCK
|
||||||
DROPLET: LAPIS_ORE
|
BUBBLE_POP: BUBBLE_CORAL_FAN
|
||||||
DRAGON_BREATH: DRAGONS_BREATH
|
CLOUD: WHITE_WOOL
|
||||||
END_ROD: END_ROD
|
CRIT: IRON_SWORD
|
||||||
|
CURRENT_DOWN: SOUL_SAND
|
||||||
DAMAGE_INDICATOR: BOW
|
DAMAGE_INDICATOR: BOW
|
||||||
SWEEP_ATTACK: GOLD_SWORD
|
DOLPHIN: DOLPHIN_SPAWN_EGG
|
||||||
|
DRAGON_BREATH: DRAGON_BREATH
|
||||||
|
DRIPPING_LAVA: LAVA_BUCKET
|
||||||
|
DRIPPING_WATER: WATER_BUCKET
|
||||||
|
DUST: REDSTONE
|
||||||
|
ENCHANT: ENCHANTING_TABLE
|
||||||
|
ENCHANTED_HIT: DIAMOND_SWORD
|
||||||
|
END_ROD: END_ROD
|
||||||
|
ENTITY_EFFECT: GLOWSTONE_DUST
|
||||||
|
EXPLOSION: FIRE_CHARGE
|
||||||
|
EXPLOSION_EMITTER: TNT
|
||||||
FALLING_DUST: SAND
|
FALLING_DUST: SAND
|
||||||
TOTEM: TOTEM
|
FIREWORK: FIREWORK_ROCKET
|
||||||
SPIT: PUMPKIN_SEEDS
|
FISHING: FISHING_ROD
|
||||||
style:
|
FLAME: BLAZE_POWDER
|
||||||
|
HAPPY_VILLAGER: DARK_OAK_DOOR
|
||||||
|
HEART: POPPY
|
||||||
|
INSTANT_EFFECT: SPLASH_POTION
|
||||||
|
ITEM: ITEM_FRAME
|
||||||
|
ITEM_SLIME: SLIME_BALL
|
||||||
|
ITEM_SNOWBALL: SNOWBALL
|
||||||
|
LARGE_SMOKE: COBWEB
|
||||||
|
LAVA: MAGMA_CREAM
|
||||||
|
MYCELIUM: MYCELIUM
|
||||||
|
NAUTILUS: HEART_OF_THE_SEA
|
||||||
|
NONE: GLASS_PANE
|
||||||
|
NOTE: NOTE_BLOCK
|
||||||
|
POOF: FIREWORK_STAR
|
||||||
|
PORTAL: OBSIDIAN
|
||||||
|
RAIN: PUFFERFISH_BUCKET
|
||||||
|
SMOKE: TORCH
|
||||||
|
SPELL: POTION
|
||||||
|
SPIT: LLAMA_SPAWN_EGG
|
||||||
|
SPLASH: SALMON
|
||||||
|
SQUID_INK: INK_SAC
|
||||||
|
SWEEP_ATTACK: GOLDEN_SWORD
|
||||||
|
TOTEM_OF_UNDYING: TOTEM
|
||||||
|
UNDERWATER: TURTLE_HELMET
|
||||||
|
WITCH: CAULDRON
|
||||||
|
effect-legacy: # 1.9 to 1.12
|
||||||
|
AMBIENT_ENTITY_EFFECT: BEACON
|
||||||
|
ANGRY_VILLAGER: IRON_DOOR
|
||||||
|
BARRIER: BARRIER
|
||||||
|
BLOCK: STONE
|
||||||
|
BUBBLE: GLASS
|
||||||
|
CLOUD: WOOL
|
||||||
|
CRIT: IRON_SWORD
|
||||||
|
DAMAGE_INDICATOR: BOW
|
||||||
|
DRAGON_BREATH: DRAGONS_BREATH
|
||||||
|
DRIPPING_LAVA: LAVA_BUCKET
|
||||||
|
DRIPPING_WATER: WATER_BUCKET
|
||||||
|
DUST: REDSTONE
|
||||||
|
ENCHANT: ENCHANTMENT_TABLE
|
||||||
|
ENCHANTED_HIT: DIAMOND_SWORD
|
||||||
|
END_ROD: END_ROD
|
||||||
|
ENTITY_EFFECT: GLOWSTONE_DUST
|
||||||
|
EXPLOSION: FIREBALL
|
||||||
|
EXPLOSION_EMITTER: TNT
|
||||||
|
FALLING_DUST: SAND
|
||||||
|
FIREWORK: FIREWORK
|
||||||
|
FISHING: FISHING_ROD
|
||||||
|
FLAME: BLAZE_POWDER
|
||||||
|
FOOTSTEP: GRASS
|
||||||
|
HAPPY_VILLAGER: WOOD_DOOR
|
||||||
|
HEART: RED_ROSE
|
||||||
|
INSTANT_EFFECT: POTION
|
||||||
|
ITEM: ITEM_FRAME
|
||||||
|
ITEM_SLIME: SLIME_BALL
|
||||||
|
ITEM_SNOWBALL: SNOWBALL
|
||||||
|
LARGE_SMOKE: WEB
|
||||||
|
LAVA: MAGMA_CREAM
|
||||||
|
MYCELIUM: MYCEL
|
||||||
NONE: THIN_GLASS
|
NONE: THIN_GLASS
|
||||||
BEAM: POWERED_RAIL
|
NOTE: NOTE_BLOCK
|
||||||
HALO: ENDER_PORTAL_FRAME
|
POOF: FIREWORK_CHARGE
|
||||||
POINT: STONE_BUTTON
|
PORTAL: OBSIDIAN
|
||||||
MOVE: PISTON_BASE
|
RAIN: LAPIS_BLOCK
|
||||||
SPIN: BEACON
|
SMOKE: TORCH
|
||||||
QUADHELIX: ACTIVATOR_RAIL
|
SPELL: GLASS_BOTTLE
|
||||||
ORBIT: ENCHANTMENT_TABLE
|
SPIT: PUMPKIN_SEEDS
|
||||||
FEET: GRASS
|
SPLASH: FISH
|
||||||
CUBE: STONE
|
SWEEP_ATTACK: GOLD_SWORD
|
||||||
|
TOTEM_OF_UNDYING: TOTEM
|
||||||
|
UNDERWATER: BOAT
|
||||||
|
WITCH: CAULDRON
|
||||||
|
style: # 1.13 and up
|
||||||
ARROWS: BOW
|
ARROWS: BOW
|
||||||
SPIRAL: HOPPER
|
BEAM: POWERED_RAIL
|
||||||
THICK: VINE
|
|
||||||
WINGS: ELYTRA
|
|
||||||
SPHERE: SNOW_BALL
|
|
||||||
SWORDS: IRON_SWORD
|
|
||||||
HURT: CACTUS
|
|
||||||
BLOCKPLACE: WOOD
|
|
||||||
BLOCKBREAK: IRON_PICKAXE
|
BLOCKBREAK: IRON_PICKAXE
|
||||||
BLOCKEDIT: DISPENSER
|
BLOCKEDIT: DISPENSER
|
||||||
|
BLOCKPLACE: OAK_PLANKS
|
||||||
|
CUBE: STONE
|
||||||
|
FEET: GRASS
|
||||||
|
HALO: ENDER_PORTAL_FRAME
|
||||||
|
HURT: CACTUS
|
||||||
|
MOVE: PISTON
|
||||||
|
NONE: GLASS_PANE
|
||||||
|
ORBIT: ENCHANTING_TABLE
|
||||||
|
POINT: STONE_BUTTON
|
||||||
|
QUADHELIX: NAUTILUS_SHELL
|
||||||
|
SPHERE: HEART_OF_THE_SEA
|
||||||
|
SPIN: BEACON
|
||||||
|
SPIRAL: HOPPER
|
||||||
|
SWORDS: IRON_SWORD
|
||||||
|
THICK: COBWEB
|
||||||
|
WINGS: ELYTRA
|
||||||
|
style-legacy: # 1.9 to 1.12
|
||||||
|
ARROWS: BOW
|
||||||
|
BEAM: POWERED_RAIL
|
||||||
|
BLOCKBREAK: IRON_PICKAXE
|
||||||
|
BLOCKEDIT: DISPENSER
|
||||||
|
BLOCKPLACE: WOOD
|
||||||
|
CUBE: STONE
|
||||||
|
FEET: GRASS
|
||||||
|
HALO: ENDER_PORTAL_FRAME
|
||||||
|
HURT: CACTUS
|
||||||
|
MOVE: PISTON_BASE
|
||||||
|
NONE: THIN_GLASS
|
||||||
|
ORBIT: ENCHANTMENT_TABLE
|
||||||
|
POINT: STONE_BUTTON
|
||||||
|
QUADHELIX: ACTIVATOR_RAIL
|
||||||
|
SPHERE: SNOW_BALL
|
||||||
|
SPIN: BEACON
|
||||||
|
SPIRAL: HOPPER
|
||||||
|
SWORDS: IRON_SWORD
|
||||||
|
THICK: VINE
|
||||||
|
WINGS: ELYTRA
|
||||||
|
|
||||||
# That's everything! You reached the end of the configuration.
|
# That's everything! You reached the end of the configuration.
|
||||||
# Enjoy the plugin!
|
# Enjoy the plugin!
|
Loading…
Add table
Add a link
Reference in a new issue