diff --git a/pom.xml b/pom.xml
index ddcea38..620fc28 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,7 +42,6 @@
com.zaxxer:HikariCP
org.slf4j:slf4j-api
org.slf4j:slf4j-nop
- org.xerial:sqlite-jdbc
@@ -70,7 +69,6 @@
com.zaxxer:HikariCP
org.slf4j:slf4j-api
org.slf4j:slf4j-nop
- org.xerial:sqlite-jdbc
@@ -98,7 +96,6 @@
com.zaxxer:HikariCP
org.slf4j:slf4j-api
org.slf4j:slf4j-nop
- org.xerial:sqlite-jdbc
@@ -126,7 +123,6 @@
com.zaxxer:HikariCP
org.slf4j:slf4j-api
org.slf4j:slf4j-nop
- org.xerial:sqlite-jdbc
@@ -154,7 +150,6 @@
com.zaxxer:HikariCP
org.slf4j:slf4j-api
org.slf4j:slf4j-nop
- org.xerial:sqlite-jdbc
diff --git a/src/com/esophose/playerparticles/PlayerParticles.java b/src/com/esophose/playerparticles/PlayerParticles.java
index 6ca5828..ba56b34 100644
--- a/src/com/esophose/playerparticles/PlayerParticles.java
+++ b/src/com/esophose/playerparticles/PlayerParticles.java
@@ -150,7 +150,7 @@ public class PlayerParticles extends JavaPlugin {
}
if (!databaseConnector.isInitialized()) {
- getLogger().severe("Unable to connect to the MySql database! Is your login information correct? Falling back to file database.");
+ getLogger().severe("Unable to connect to the MySQL database! Is your login information correct? Falling back to SQLite database instead.");
configureDatabase(false);
return;
}
@@ -159,35 +159,56 @@ public class PlayerParticles extends JavaPlugin {
// Check if pp_users exists, if it does, this is an old database schema that needs to be deleted
try { // @formatter:off
try (Statement statement = connection.createStatement()) {
- ResultSet result = statement.executeQuery("SHOW TABLES LIKE 'pp_users'");
+ String pp_usersQuery;
+ if (useMySql) {
+ pp_usersQuery = "SHOW TABLES LIKE 'pp_users'";
+ } else {
+ pp_usersQuery = "SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'pp_users'";
+ }
+ ResultSet result = statement.executeQuery(pp_usersQuery);
if (result.next()) {
+ statement.close();
+
Statement dropStatement = connection.createStatement();
- dropStatement.addBatch("DROP TABLE pp_users");
- dropStatement.addBatch("DROP TABLE pp_fixed");
- dropStatement.addBatch("DROP TABLE pp_data_item");
- dropStatement.addBatch("DROP TABLE pp_data_block");
- dropStatement.addBatch("DROP TABLE pp_data_color");
- dropStatement.addBatch("DROP TABLE pp_data_note");
+ dropStatement.addBatch("DROP TABLE IF EXISTS pp_users");
+ dropStatement.addBatch("DROP TABLE IF EXISTS pp_fixed");
+ dropStatement.addBatch("DROP TABLE IF EXISTS pp_data_item");
+ dropStatement.addBatch("DROP TABLE IF EXISTS pp_data_block");
+ dropStatement.addBatch("DROP TABLE IF EXISTS pp_data_color");
+ dropStatement.addBatch("DROP TABLE IF EXISTS pp_data_note");
dropStatement.executeBatch();
+ getLogger().warning("Deleted old " + (useMySql ? "MySQL" : "SQLite") + " database schema, it was out of date.");
}
}
// Check if pp_group exists, if it doesn't, we need to create all the tables
try (Statement statement = connection.createStatement()) {
- ResultSet result = statement.executeQuery("SHOW TABLES LIKE 'pp_group'");
+ String pp_groupQuery;
+ if (useMySql) {
+ pp_groupQuery = "SHOW TABLES LIKE 'pp_group'";
+ } else {
+ pp_groupQuery = "SELECT name FROM sqlite_master WHERE type = 'table' AND name = 'pp_group'";
+ }
+ ResultSet result = statement.executeQuery(pp_groupQuery);
if (!result.next()) {
+ statement.close();
+
Statement createStatement = connection.createStatement();
- createStatement.addBatch("CREATE TABLE pp_player (uuid VARCHAR(36))");
- createStatement.addBatch("CREATE TABLE pp_group (uuid VARCHAR(36), owner_uuid VARCHAR(36), name VARCHAR(100))");
- createStatement.addBatch("CREATE TABLE pp_fixed (owner_uuid VARCHAR(36), id SMALLINT, particle_uuid VARCHAR(36), world VARCHAR(100), xPos DOUBLE, yPos DOUBLE, zPos DOUBLE)");
- createStatement.addBatch("CREATE TABLE pp_particle (uuid VARCHAR(36), group_uuid VARCHAR(36), id SMALLINT, effect VARCHAR(100), style VARCHAR(100), item_material VARCHAR(100), block_material VARCHAR(100), note SMALLINT, r SMALLINT, g SMALLINT, b SMALLINT)");
+ createStatement.addBatch("CREATE TABLE IF NOT EXISTS pp_group (uuid VARCHAR(36), owner_uuid VARCHAR(36), name VARCHAR(100))");
+ createStatement.addBatch("CREATE TABLE IF NOT EXISTS pp_fixed (owner_uuid VARCHAR(36), id SMALLINT, particle_uuid VARCHAR(36), world VARCHAR(100), xPos DOUBLE, yPos DOUBLE, zPos DOUBLE)");
+ createStatement.addBatch("CREATE TABLE IF NOT EXISTS pp_particle (uuid VARCHAR(36), group_uuid VARCHAR(36), id SMALLINT, effect VARCHAR(100), style VARCHAR(100), item_material VARCHAR(100), block_material VARCHAR(100), note SMALLINT, r SMALLINT, g SMALLINT, b SMALLINT)");
createStatement.executeBatch();
+ getLogger().warning("Created new " + (useMySql ? "MySQL" : "SQLite") + " database schema.");
}
}
} catch (SQLException ex) {
- getLogger().severe("Unable to connect to the MySql database! Is your login information correct? Falling back to file database instead.");
- configureDatabase(false);
- return;
+ ex.printStackTrace();
+ if (useMySql) {
+ getLogger().severe("Unable to connect to the MySQL database! Is your login information correct? Falling back to SQLite database instead.");
+ configureDatabase(false);
+ } else {
+ getLogger().severe("Unable to connect to the SQLite database! This is a critical error, the plugin will be unable to save any data.");
+ }
}
}); // @formatter:on
}
diff --git a/src/com/esophose/playerparticles/command/EditCommandModule.java b/src/com/esophose/playerparticles/command/EditCommandModule.java
index b8aae62..c238596 100644
--- a/src/com/esophose/playerparticles/command/EditCommandModule.java
+++ b/src/com/esophose/playerparticles/command/EditCommandModule.java
@@ -8,7 +8,7 @@ import com.esophose.playerparticles.particles.PPlayer;
public class EditCommandModule implements CommandModule {
public void onCommandExecute(PPlayer pplayer, String[] args) {
-
+
}
public List onTabComplete(PPlayer pplayer, String[] args) {
diff --git a/src/com/esophose/playerparticles/command/ParticleCommandHandler.java b/src/com/esophose/playerparticles/command/ParticleCommandHandler.java
index c25e3e1..599c45f 100644
--- a/src/com/esophose/playerparticles/command/ParticleCommandHandler.java
+++ b/src/com/esophose/playerparticles/command/ParticleCommandHandler.java
@@ -31,6 +31,8 @@ public class ParticleCommandHandler implements CommandExecutor, TabCompleter {
private static List commands;
static {
+ commands = new ArrayList();
+
commands.add(new AddCommandModule());
commands.add(new DataCommandModule());
commands.add(new DefaultCommandModule());
diff --git a/src/com/esophose/playerparticles/manager/DataManager.java b/src/com/esophose/playerparticles/manager/DataManager.java
index bde97ae..de5502c 100644
--- a/src/com/esophose/playerparticles/manager/DataManager.java
+++ b/src/com/esophose/playerparticles/manager/DataManager.java
@@ -90,24 +90,25 @@ public class DataManager { // @formatter:off
PlayerParticles.databaseConnector.connect((connection) -> {
// Load particle groups
- String groupQuery = "SELECT * FROM pp_group g WHERE g.owner_uuid = ? " +
- "JOIN pp_particle p ON g.uuid = p.group_uuid";
+ String groupQuery = "SELECT * FROM pp_group g " +
+ "JOIN pp_particle p ON g.uuid = p.group_uuid " +
+ "WHERE g.owner_uuid = ?";
try (PreparedStatement statement = connection.prepareStatement(groupQuery)) {
statement.setString(1, playerUUID.toString());
ResultSet result = statement.executeQuery();
while (result.next()) {
// Group properties
- String groupName = result.getString("g.name");
+ String groupName = result.getString("name");
// Particle properties
- int id = result.getInt("p.id");
- ParticleEffect effect = ParticleEffect.fromName(result.getString("p.effect"));
- ParticleStyle style = ParticleStyleManager.styleFromString(result.getString("p.style"));
- Material itemMaterial = ParticleUtils.closestMatchWithFallback(result.getString("p.item_material"));
- Material blockMaterial = ParticleUtils.closestMatchWithFallback(result.getString("p.block_material"));
- NoteColor noteColor = new NoteColor(result.getInt("p.note"));
- OrdinaryColor color = new OrdinaryColor(result.getInt("p.r"), result.getInt("p.g"), result.getInt("p.b"));
+ int id = result.getInt("id");
+ ParticleEffect effect = ParticleEffect.fromName(result.getString("effect"));
+ ParticleStyle style = ParticleStyleManager.styleFromString(result.getString("style"));
+ Material itemMaterial = ParticleUtils.closestMatchWithFallback(result.getString("item_material"));
+ Material blockMaterial = ParticleUtils.closestMatchWithFallback(result.getString("block_material"));
+ NoteColor noteColor = new NoteColor(result.getInt("note"));
+ OrdinaryColor color = new OrdinaryColor(result.getInt("r"), result.getInt("g"), result.getInt("b"));
ParticlePair particle = new ParticlePair(playerUUID, id, effect, style, itemMaterial, blockMaterial, color, noteColor);
// Try to add particle to an existing group
@@ -131,28 +132,29 @@ public class DataManager { // @formatter:off
}
// Load fixed effects
- String fixedQuery = "SELECT * FROM pp_fixed f WHERE f.owner_uuid = ? " +
- "JOIN pp_particle p ON f.particle_uuid = p.uuid";
+ String fixedQuery = "SELECT f.id AS f_id, f.world, f.xPos, f.yPos, f.zPos, p.id AS p_id, p.effect, p.style, p.item_material, p.block_material, p.note, p.r, p.g, p.b FROM pp_fixed f " +
+ "JOIN pp_particle p ON f.particle_uuid = p.uuid " +
+ "WHERE f.owner_uuid = ?";
try (PreparedStatement statement = connection.prepareStatement(fixedQuery)) {
statement.setString(1, playerUUID.toString());
ResultSet result = statement.executeQuery();
while (result.next()) {
// Fixed effect properties
- int fixedEffectId = result.getInt("f.id");
- String worldName = result.getString("f.world");
- double xPos = result.getDouble("f.xPos");
- double yPos = result.getDouble("f.yPos");
- double zPos = result.getDouble("f.zPos");
+ int fixedEffectId = result.getInt("f_id");
+ String worldName = result.getString("world");
+ double xPos = result.getDouble("xPos");
+ double yPos = result.getDouble("yPos");
+ double zPos = result.getDouble("zPos");
// Particle properties
- int particleId = result.getInt("p.id");
- ParticleEffect effect = ParticleEffect.fromName(result.getString("p.effect"));
- ParticleStyle style = ParticleStyleManager.styleFromString(result.getString("p.style"));
- Material itemMaterial = ParticleUtils.closestMatchWithFallback(result.getString("p.item_material"));
- Material blockMaterial = ParticleUtils.closestMatchWithFallback(result.getString("p.block_material"));
- NoteColor noteColor = new NoteColor(result.getInt("p.note"));
- OrdinaryColor color = new OrdinaryColor(result.getInt("p.r"), result.getInt("p.g"), result.getInt("p.b"));
+ int particleId = result.getInt("p_id");
+ ParticleEffect effect = ParticleEffect.fromName(result.getString("effect"));
+ ParticleStyle style = ParticleStyleManager.styleFromString(result.getString("style"));
+ Material itemMaterial = ParticleUtils.closestMatchWithFallback(result.getString("item_material"));
+ Material blockMaterial = ParticleUtils.closestMatchWithFallback(result.getString("block_material"));
+ NoteColor noteColor = new NoteColor(result.getInt("note"));
+ OrdinaryColor color = new OrdinaryColor(result.getInt("r"), result.getInt("g"), result.getInt("b"));
ParticlePair particle = new ParticlePair(playerUUID, particleId, effect, style, itemMaterial, blockMaterial, color, noteColor);
fixedParticles.add(new FixedParticleEffect(playerUUID, fixedEffectId, worldName, xPos, yPos, zPos, particle));
@@ -232,8 +234,10 @@ public class DataManager { // @formatter:off
});
getPPlayer(playerUUID, (pplayer) -> {
+ String groupName = group.getName() == null ? "" : group.getName();
for (ParticleGroup existing : pplayer.getParticles()) {
- if (existing.getName().equalsIgnoreCase(group.getName())) {
+ String existingName = existing.getName() == null ? "" : existing.getName();
+ if (groupName.equalsIgnoreCase(existingName)) {
pplayer.getParticles().remove(existing);
break;
}
diff --git a/src/com/esophose/playerparticles/manager/LangManager.java b/src/com/esophose/playerparticles/manager/LangManager.java
index e565ffc..68edd7f 100644
--- a/src/com/esophose/playerparticles/manager/LangManager.java
+++ b/src/com/esophose/playerparticles/manager/LangManager.java
@@ -224,14 +224,18 @@ public class LangManager {
private static YamlConfiguration configureLangFile(FileConfiguration config) {
File pluginDataFolder = PlayerParticles.getPlugin().getDataFolder();
langFileName = config.getString("lang-file");
- File targetLangFile = new File(pluginDataFolder.getAbsolutePath() + File.pathSeparator + "lang" + File.pathSeparator + langFileName);
+ File targetLangFile = new File(pluginDataFolder.getAbsolutePath() + "/lang/" + langFileName);
if (!targetLangFile.exists()) { // Target .lang file didn't exist, default to en_US.lang
- PlayerParticles.getPlugin().getLogger().warning("Couldn't find lang file '" + langFileName + "', defaulting to en_US.lang");
+ if (!langFileName.equals("en_US.lang")) {
+ PlayerParticles.getPlugin().getLogger().warning("Couldn't find lang file '" + langFileName + "', defaulting to en_US.lang");
+ }
langFileName = "en_US.lang";
- targetLangFile = new File(pluginDataFolder.getAbsolutePath() + File.pathSeparator + "lang" + File.pathSeparator + langFileName);
+
+ targetLangFile = new File(pluginDataFolder.getAbsolutePath() + "/lang/" + langFileName);
if (!targetLangFile.exists()) { // en_US.lang didn't exist, create it
try (InputStream stream = PlayerParticles.getPlugin().getResource("lang/en_US.lang")) {
+ targetLangFile.getParentFile().mkdir(); // Make sure the directory always exists
Files.copy(stream, Paths.get(targetLangFile.getAbsolutePath()));
return YamlConfiguration.loadConfiguration(targetLangFile);
} catch (IOException ex) {
diff --git a/src/com/esophose/playerparticles/particles/ParticleEffect.java b/src/com/esophose/playerparticles/particles/ParticleEffect.java
index 99a1816..2ade2a5 100644
--- a/src/com/esophose/playerparticles/particles/ParticleEffect.java
+++ b/src/com/esophose/playerparticles/particles/ParticleEffect.java
@@ -207,13 +207,15 @@ public enum ParticleEffect {
* @param center Center location of the effect
* @throws ParticleDataException If the particle effect requires additional data
*/
- public void display(float offsetX, float offsetY, float offsetZ, float speed, int amount, Location center) throws ParticleDataException {
+ public void display(double offsetX, double offsetY, double offsetZ, double speed, int amount, Location center) throws ParticleDataException {
if (hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
throw new ParticleDataException("This particle effect requires additional data");
}
- for (Player player : getPlayersInRange(center))
+ for (Player player : getPlayersInRange(center)) {
player.spawnParticle(internalEnum, center.getX(), center.getY(), center.getZ(), amount, offsetX, offsetY, offsetZ, speed);
+ }
+
}
/**
@@ -260,7 +262,7 @@ public enum ParticleEffect {
* @param center Center location of the effect
* @throws ParticleDataException If the particle effect does not require additional data or if the data type is incorrect
*/
- public void display(Material spawnMaterial, float offsetX, float offsetY, float offsetZ, float speed, int amount, Location center) throws ParticleDataException {
+ public void display(Material spawnMaterial, double offsetX, double offsetY, double offsetZ, double speed, int amount, Location center) throws ParticleDataException {
if (!hasProperty(ParticleProperty.REQUIRES_MATERIAL_DATA)) {
throw new ParticleDataException("This particle effect does not require additional data");
}
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleBeam.java b/src/com/esophose/playerparticles/styles/ParticleStyleBeam.java
index 160dbc2..c1cfedb 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleBeam.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleBeam.java
@@ -11,7 +11,7 @@ import com.esophose.playerparticles.styles.api.ParticleStyle;
public class ParticleStyleBeam implements ParticleStyle {
- private float step = 0;
+ private int step = 0;
private boolean reversed = false;
public List getParticles(ParticlePair particle, Location location) {
@@ -22,7 +22,7 @@ public class ParticleStyleBeam implements ParticleStyle {
for (int i = 0; i < points; i++) {
double angle = slice * i;
double newX = location.getX() + radius * Math.cos(angle);
- double newY = location.getY() + (step / 10) - 1;
+ double newY = location.getY() + (step / 10D) - 1;
double newZ = location.getZ() + radius * Math.sin(angle);
particles.add(new PParticle(new Location(location.getWorld(), newX, newY, newZ)));
}
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleCube.java b/src/com/esophose/playerparticles/styles/ParticleStyleCube.java
index 917d188..27fda78 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleCube.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleCube.java
@@ -41,7 +41,7 @@ import com.esophose.playerparticles.util.VectorUtils;
*/
public class ParticleStyleCube implements ParticleStyle {
- private float edgeLength = 2;
+ private double edgeLength = 2;
private double angularVelocityX = (Math.PI / 200) / 5;
private double angularVelocityY = (Math.PI / 170) / 5;
private double angularVelocityZ = (Math.PI / 155) / 5;
@@ -57,7 +57,7 @@ public class ParticleStyleCube implements ParticleStyle {
xRotation = step * angularVelocityX;
yRotation = step * angularVelocityY;
zRotation = step * angularVelocityZ;
- float a = edgeLength / 2;
+ double a = edgeLength / 2;
double angleX, angleY;
Vector v = new Vector();
for (int i = 0; i < 4; i++) {
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleHalo.java b/src/com/esophose/playerparticles/styles/ParticleStyleHalo.java
index 56547a9..67ca79b 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleHalo.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleHalo.java
@@ -11,7 +11,7 @@ import com.esophose.playerparticles.styles.api.ParticleStyle;
public class ParticleStyleHalo implements ParticleStyle {
- private float step = 0;
+ private int step = 0;
public List getParticles(ParticlePair particle, Location location) {
if (step % 2 == 0) return new ArrayList();
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleNone.java b/src/com/esophose/playerparticles/styles/ParticleStyleNone.java
index 9518aaa..c3ea757 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleNone.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleNone.java
@@ -19,113 +19,113 @@ public class ParticleStyleNone implements ParticleStyle {
switch (particleEffect) {
case AMBIENT_ENTITY_EFFECT:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case ANGRY_VILLAGER:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case BARRIER:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case BLOCK:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case BUBBLE:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case BUBBLE_COLUMN_UP:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case BUBBLE_POP:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case CLOUD:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case CRIT:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case CURRENT_DOWN:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case DAMAGE_INDICATOR:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case DOLPHIN:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case DRAGON_BREATH:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case DRIPPING_LAVA:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case DRIPPING_WATER:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case DUST:
- return Collections.singletonList(new PParticle(location, 0.5F, 0.5F, 0.5F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.5, 0.5, 0.5, 0.0));
case ENCHANT:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.05F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.05));
case ENCHANTED_HIT:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case END_ROD:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case ENTITY_EFFECT:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case EXPLOSION:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case EXPLOSION_EMITTER:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case FALLING_DUST:
for (int i = 0; i < 2; i++)
- particles.add(new PParticle(location.add(0, 0.75, 0), 0.6F, 0.4F, 0.6F, 0.0F));
+ particles.add(new PParticle(location.add(0, 0.75, 0), 0.6, 0.4, 0.6, 0.0));
return particles;
case FIREWORK:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case FISHING:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case FLAME:
- return Collections.singletonList(new PParticle(location, 0.1F, 0.1F, 0.1F, 0.05F));
+ return Collections.singletonList(new PParticle(location, 0.1, 0.1, 0.1, 0.05));
case FOOTSTEP:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case HAPPY_VILLAGER:
- return Collections.singletonList(new PParticle(location, 0.5F, 0.5F, 0.5F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.5, 0.5, 0.5, 0.0));
case HEART:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case INSTANT_EFFECT:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case ITEM:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case ITEM_SLIME:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case ITEM_SNOWBALL:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case LARGE_SMOKE:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case LAVA:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case MYCELIUM:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case NAUTILUS:
- return Collections.singletonList(new PParticle(location, 0.5F, 0.5F, 0.5F, 0.05F));
+ return Collections.singletonList(new PParticle(location, 0.5, 0.5, 0.5, 0.05));
case NONE:
return particles;
case NOTE:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case POOF:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case PORTAL:
- return Collections.singletonList(new PParticle(location, 0.5F, 0.5F, 0.5F, 0.05F));
+ return Collections.singletonList(new PParticle(location, 0.5, 0.5, 0.5, 0.05));
case RAIN:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case SMOKE:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case SPELL:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case SPIT:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case SPLASH:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case SQUID_INK:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case SWEEP_ATTACK:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
case TOTEM_OF_UNDYING:
- return Collections.singletonList(new PParticle(location, 0.6F, 0.6F, 0.6F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.6, 0.6, 0.6, 0.0));
case UNDERWATER:
for (int i = 0; i < 5; i++)
- particles.add(new PParticle(location, 0.5F, 0.5F, 0.5F, 0.0F));
+ particles.add(new PParticle(location, 0.5, 0.5, 0.5, 0.0));
return particles;
case WITCH:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
default:
- return Collections.singletonList(new PParticle(location, 0.4F, 0.4F, 0.4F, 0.0F));
+ return Collections.singletonList(new PParticle(location, 0.4, 0.4, 0.4, 0.0));
}
}
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleOrbit.java b/src/com/esophose/playerparticles/styles/ParticleStyleOrbit.java
index 5f3ab7e..2b9d17d 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleOrbit.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleOrbit.java
@@ -11,14 +11,14 @@ import com.esophose.playerparticles.styles.api.ParticleStyle;
public class ParticleStyleOrbit implements ParticleStyle {
- private float step = 0;
+ private int step = 0;
public List getParticles(ParticlePair particle, Location location) {
int orbs = 3;
List particles = new ArrayList();
for (int i = 0; i < orbs; i++) {
- double dx = -(Math.cos((step / 120) * (Math.PI * 2) + (((Math.PI * 2) / orbs) * i)));
- double dz = -(Math.sin((step / 120) * (Math.PI * 2) + (((Math.PI * 2) / orbs) * i)));
+ double dx = -(Math.cos((step / 120D) * (Math.PI * 2) + (((Math.PI * 2) / orbs) * i)));
+ double dz = -(Math.sin((step / 120D) * (Math.PI * 2) + (((Math.PI * 2) / orbs) * i)));
particles.add(new PParticle(new Location(location.getWorld(), location.getX() + dx, location.getY(), location.getZ() + dz)));
}
return particles;
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleQuadhelix.java b/src/com/esophose/playerparticles/styles/ParticleStyleQuadhelix.java
index 8d269dc..c2cbc50 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleQuadhelix.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleQuadhelix.java
@@ -11,16 +11,16 @@ import com.esophose.playerparticles.styles.api.ParticleStyle;
public class ParticleStyleQuadhelix implements ParticleStyle {
- private float stepX = 0;
- private float stepY = 0;
+ private int stepX = 0;
+ private int stepY = 0;
private boolean reverse = false;
public List getParticles(ParticlePair particle, Location location) {
List particles = new ArrayList();
for (int i = 0; i < 4; i++) {
- double dx = -(Math.cos((stepX / 90) * (Math.PI * 2) + ((Math.PI / 2) * i))) * ((60 - Math.abs(stepY)) / 60);
- double dy = (stepY / 60) * 1.5;
- double dz = -(Math.sin((stepX / 90) * (Math.PI * 2) + ((Math.PI / 2) * i))) * ((60 - Math.abs(stepY)) / 60);
+ double dx = -(Math.cos((stepX / 90D) * (Math.PI * 2) + ((Math.PI / 2) * i))) * ((60 - Math.abs(stepY)) / 60);
+ double dy = (stepY / 60D) * 1.5;
+ double dz = -(Math.sin((stepX / 90D) * (Math.PI * 2) + ((Math.PI / 2) * i))) * ((60 - Math.abs(stepY)) / 60);
particles.add(new PParticle(new Location(location.getWorld(), location.getX() + dx, location.getY() + dy, location.getZ() + dz)));
}
return particles;
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleSphere.java b/src/com/esophose/playerparticles/styles/ParticleStyleSphere.java
index 28f2d5c..a4c39dc 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleSphere.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleSphere.java
@@ -13,7 +13,7 @@ public class ParticleStyleSphere implements ParticleStyle {
public List getParticles(ParticlePair particle, Location location) {
int density = 15;
- float radius = 1.5f;
+ double radius = 1.5f;
List particles = new ArrayList();
for (int i = 0; i < density; i++) {
diff --git a/src/com/esophose/playerparticles/styles/ParticleStyleSpin.java b/src/com/esophose/playerparticles/styles/ParticleStyleSpin.java
index c1bd86f..0442704 100644
--- a/src/com/esophose/playerparticles/styles/ParticleStyleSpin.java
+++ b/src/com/esophose/playerparticles/styles/ParticleStyleSpin.java
@@ -11,7 +11,7 @@ import com.esophose.playerparticles.styles.api.ParticleStyle;
public class ParticleStyleSpin implements ParticleStyle {
- private float step = 0;
+ private int step = 0;
public List getParticles(ParticlePair particle, Location location) {
int points = 15;
diff --git a/src/com/esophose/playerparticles/styles/api/PParticle.java b/src/com/esophose/playerparticles/styles/api/PParticle.java
index 86b7273..185cd55 100644
--- a/src/com/esophose/playerparticles/styles/api/PParticle.java
+++ b/src/com/esophose/playerparticles/styles/api/PParticle.java
@@ -16,8 +16,8 @@ public class PParticle {
* Data that determines where the particle will spawn
*/
private Location location;
- private float speed;
- private float xOff, yOff, zOff;
+ private double speed;
+ private double xOff, yOff, zOff;
/**
* The constructor with all the fancy parameters for customization
@@ -28,7 +28,7 @@ public class PParticle {
* @param zOff The offset for the z-axis
* @param speed The speed the particle will move at
*/
- public PParticle(Location location, float xOff, float yOff, float zOff, float speed) {
+ public PParticle(Location location, double xOff, double yOff, double zOff, double speed) {
this.location = location;
this.xOff = xOff;
this.yOff = yOff;
@@ -75,7 +75,7 @@ public class PParticle {
*
* @return The particle's speed
*/
- public float getSpeed() {
+ public double getSpeed() {
return this.speed;
}
@@ -84,7 +84,7 @@ public class PParticle {
*
* @return The x-axis offset
*/
- public float getXOff() {
+ public double getXOff() {
return this.xOff;
}
@@ -93,7 +93,7 @@ public class PParticle {
*
* @return The y-axis offset
*/
- public float getYOff() {
+ public double getYOff() {
return this.yOff;
}
@@ -102,7 +102,7 @@ public class PParticle {
*
* @return The z-axis offset
*/
- public float getZOff() {
+ public double getZOff() {
return this.zOff;
}