Merge branch 'update/july-cosmetics' into develop
This commit is contained in:
commit
5ba1630fae
@ -6,6 +6,7 @@ import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Entity;
|
||||
@ -13,6 +14,8 @@ import org.bukkit.util.Vector;
|
||||
|
||||
public class UtilMath
|
||||
{
|
||||
public static final double TAU = Math.PI * 2D;
|
||||
|
||||
public static double trim(int degree, double d)
|
||||
{
|
||||
String format = "#.#";
|
||||
@ -332,4 +335,119 @@ public class UtilMath
|
||||
|
||||
return min;
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an array of points, arranged in a circle normal to a vector.
|
||||
*
|
||||
* @param center The center of the circle.
|
||||
* @param normal A vector normal to the circle.
|
||||
* @param radius The radius of the circle.
|
||||
* @param points How many points to make up the circle.
|
||||
*
|
||||
* @return An array of points of the form <code>double[point #][x=0, y=1, z=3]</code>.
|
||||
*/
|
||||
public static double[][] normalCircle(Location center, Vector normal, double radius, int points)
|
||||
{
|
||||
return normalCircle(center.toVector(), normal, radius, points);
|
||||
}
|
||||
|
||||
/**
|
||||
* Creates an array of points, arranged in a circle normal to a vector.
|
||||
*
|
||||
* @param center The center of the circle.
|
||||
* @param normal A vector normal to the circle.
|
||||
* @param radius The radius of the circle.
|
||||
* @param points How many points to make up the circle.
|
||||
*
|
||||
* @return An array of points of the form <code>double[point #][x=0, y=1, z=3]</code>.
|
||||
*/
|
||||
public static double[][] normalCircle(Vector center, Vector normal, double radius, int points)
|
||||
{
|
||||
Vector n = normal.clone().normalize();
|
||||
Vector a = n.clone().add(new Vector(1, 1, 1)).crossProduct(n).normalize();
|
||||
Vector b = n.getCrossProduct(a).normalize();
|
||||
|
||||
double[][] data = new double[points][3];
|
||||
|
||||
double interval = TAU / points;
|
||||
double theta = 0;
|
||||
|
||||
for (int i = 0; i < points; i++)
|
||||
{
|
||||
data[i][0] = center.getX() + (radius * ((Math.cos(theta) * a.getX()) + (Math.sin(theta) * b.getX())));
|
||||
data[i][1] = center.getY() + (radius * ((Math.cos(theta) * a.getY()) + (Math.sin(theta) * b.getY())));
|
||||
data[i][2] = center.getZ() + (radius * ((Math.cos(theta) * a.getZ()) + (Math.sin(theta) * b.getZ())));
|
||||
theta += interval;
|
||||
}
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
/**
|
||||
* Slightly randomize a location with a standard deviation of one.
|
||||
*
|
||||
* @param location The location to randomize.
|
||||
*
|
||||
* @return The original location, now gaussian-randomized.
|
||||
*/
|
||||
public static Location gauss(Location location)
|
||||
{
|
||||
return gauss(location, 1, 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Slightly randomize a vector with a standard deviation of one.
|
||||
*
|
||||
* @param vector The location to randomize.
|
||||
*
|
||||
* @return The randomized vector, now gaussian-randomized.
|
||||
*/
|
||||
public static Vector gauss(Vector vector)
|
||||
{
|
||||
return gauss(vector, 1, 1, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Slightly randomize a location with a standard deviation of one. <br>
|
||||
*
|
||||
* <b>This method only accepts positive values for all of its arguments.</b> <br>
|
||||
*
|
||||
* A good parameter set for small offsets is (loc, 10, 10, 10).
|
||||
*
|
||||
* @param location The location to randomize.
|
||||
* @param x A granularity control for the x-axis, higher numbers = less randomness
|
||||
* @param y A granularity control for the y-axis, higher numbers = less randomness
|
||||
* @param z A granularity control for the z-axis, higher numbers = less randomness
|
||||
*
|
||||
* @return The original location, now gaussian-randomized
|
||||
*/
|
||||
public static Location gauss(Location location, double x, double y, double z)
|
||||
{
|
||||
return location.clone().add(
|
||||
x <= 0 ? 0 : (ThreadLocalRandom.current().nextGaussian() / x),
|
||||
y <= 0 ? 0 : (ThreadLocalRandom.current().nextGaussian() / y),
|
||||
z <= 0 ? 0 : (ThreadLocalRandom.current().nextGaussian() / z));
|
||||
}
|
||||
|
||||
/**
|
||||
* Slightly randomize a vector with a standard deviation of one. <br>
|
||||
*
|
||||
* <b>This method only accepts positive values for all of its arguments.</b> <br>
|
||||
*
|
||||
* A good parameter set for small offsets is (loc, 10, 10, 10).
|
||||
*
|
||||
* @param vector The location to randomize.
|
||||
* @param x A granularity control for the x-axis, higher numbers = less randomness
|
||||
* @param y A granularity control for the y-axis, higher numbers = less randomness
|
||||
* @param z A granularity control for the z-axis, higher numbers = less randomness
|
||||
*
|
||||
* @return The randomized vector, now gaussian-randomized
|
||||
*/
|
||||
public static Vector gauss(Vector vector, double x, double y, double z)
|
||||
{
|
||||
return vector.clone().add(new Vector(
|
||||
x <= 0 ? 0 : (ThreadLocalRandom.current().nextGaussian() / x),
|
||||
y <= 0 ? 0 : (ThreadLocalRandom.current().nextGaussian() / y),
|
||||
z <= 0 ? 0 : (ThreadLocalRandom.current().nextGaussian() / z)));
|
||||
}
|
||||
}
|
||||
|
@ -166,7 +166,40 @@ public class ShapeWings extends ShapeGrid implements CosmeticShape
|
||||
"0$#######$0",
|
||||
"$#########$"
|
||||
};
|
||||
|
||||
|
||||
public static final String[] MAPLE_LEAF = new String[]
|
||||
{
|
||||
"000000000000000000000000000$000000000000000000000000000",
|
||||
"00000000000000000000000000$$$00000000000000000000000000",
|
||||
"0000000000000000000000000$$#$$0000000000000000000000000",
|
||||
"000000000000000000000000$$###$$000000000000000000000000",
|
||||
"00000000000000000000000$$#####$$00000000000000000000000",
|
||||
"0000000000000000$$$000$$#######$$000$$$0000000000000000",
|
||||
"0000000000000000$#$$$$$#########$$$$$#$0000000000000000",
|
||||
"0000000000000000$$###################$$0000000000000000",
|
||||
"00000000000000000$###################$00000000000000000",
|
||||
"00000000000$$0000$$#################$$0000$$00000000000",
|
||||
"0$$$000000$$$$$000$#################$000$$$$$000000$$$0",
|
||||
"00$$$$$$$$$###$$$0$$###############$$0$$$###$$$$$$$$$00",
|
||||
"00$$############$$$$###############$$$$############$$00",
|
||||
"000$$#############$$###############$$#############$$000",
|
||||
"0000$$###########################################$$0000",
|
||||
"00$$$#############################################$$$00",
|
||||
"$$$#################################################$$$",
|
||||
"00$$$$###########################################$$$$00",
|
||||
"00000$$$#######################################$$$00000",
|
||||
"00000000$$$$###############################$$$$00000000",
|
||||
"00000000000$$$###########################$$$00000000000",
|
||||
"0000000000000$$#########################$$0000000000000",
|
||||
"0000000000000$$#########################$$0000000000000",
|
||||
"0000000000000$##$$$$$$$$$$$#$$$$$$$$$$$##$0000000000000",
|
||||
"000000000000$$$$$000000000$#$000000000$$$$$000000000000",
|
||||
"00000000000000000000000000$#$00000000000000000000000000",
|
||||
"00000000000000000000000000$#$00000000000000000000000000",
|
||||
"00000000000000000000000000$#$00000000000000000000000000",
|
||||
"00000000000000000000000000$#$00000000000000000000000000",
|
||||
"00000000000000000000000000$$$00000000000000000000000000"
|
||||
};
|
||||
|
||||
/**
|
||||
* Default rotation to give the wings a little tilt when displayed on players for instance
|
||||
|
@ -78,6 +78,9 @@ public class SkinData
|
||||
public static final SkinData LARISSA = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjE0MTUxMzQsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jYThjNDRhOWVmZTY3NzExMDYzMjM5ODEwNDRmOTdjYmM1OWJmZmRlOGI1ODdlMGQzMWE4N2ViMDhhMmExZiJ9fX0=", "Lyac51CrnMK/CI2dWgGQLowAm/ZnQMpf0Ict/gqVrUgJVlGWDIVG77Rd1JyMQDEeESvTmoyivH+usiO0ePW95qjisqT3R43YEmLi85CqctGYqLKeSYpGYwYRz8Euw57LwJAALKOMLhVc2s4h2Or9nTecunG8KSmkCuZc4H1qh3frU+ltuV4HLqgdFUULbIHTggyvqiINov2tBqkkXeEjT7sOcTJCJNgNYU2O7//qg5kJmhso2CKHlRLpmy9LsaUK/Z+BzUmoRbwQgSwr3mz7dFAdlVWWKvKNcgX3nt1et0DIig3JKYmrnQX2Fprg+kWcr3nuizzLgjVwAlADC48P3DN0s/VBty2AYoWie16VNPIM+CV4BF2JRQ34GxZ8XceXbCKURrOjoCBgLGHvIhRW35eicoh26xp3/mwLvk5anPi5StJ/qEuzWJALeWcNbLsnt21m2MZp9h/MxaY6ftWOTzjTr5CYVd/teJyscMnGK4+lcV1dlt12lhbDMv6I+iz8iG9NIzuW5OvGkax90dA/Gq+Cd9FXVThPY4ufxWttHcTqgPB64GfMn6rywRm1B0eO1pJpYc/KlJZlW/PuaO8L1assyJs5KkOypBSy3zc6TO6pzgeOZv+VpQfA/UWpogv6ofmTpgdtwpjLFGSzIKTDXvF6FftALKVlYypG0fYbssA=");
|
||||
public static final SkinData ROWENA = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0Njk1MTcxOTgsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9jNDY1OGExODY4YzNhNjhhZWVhZmZkOTUxZDQyYmZkN2QxYTRjNGZjNDJjZDI2YTlmYzhkNTNmOTkxMTM1ZCJ9fX0=", "OqXMyH9SMmQ/Pwmb21In29YnCxbsN6yqUxfudN6KNgDwRUK6y072XhW6TIoTh9JQLAUKftpeVB53tk0LxHIxnsuBMrIHvETPDQFysIc/6xq3ABogs+zqFzcp5jk6S73HiD78JxLq5pzfUzhgDPMPuZP5Q/u2q1rYbe6B9lVEJ5sUcxBLUTossgucoR4qXYAlWVQdHRhq85Ol8a+OU7ruw3HackNGto6wt6u2MigCtiHVTt9XhJ/AJE4ScodQ3XwW4L6urpl/lV2OMCsr3mCjjjEz2EMhDbCWxrAorQ9aPpMbDkHBS+4TC1tbMGUlKhj5n+EZBYVaeLr4NGPACPSdT35p/2Zra49+DXn9Xn+681yNEB0ghTdsnsgwXg76+HVPHPqRHQMuTBQGQyGZaaTX/zE0tFjH+osMElLdb8dmz3dC7kQA4A13B2phj3YbMSF1FoU4GvnPKIQn6JIuEd6hd+pRLUW7Y+mgYIHHX1FT0ihrXAyVO6lQQ6rs92gSQr7sxC7tnhPSMFcmh7OcJYcbRpn97GMubthPLanOhVy7CKqjmwIkEVtYgP28idigKwNJ+sJuUONrOu7nMKl1UTD5EEapOacc/np6UhdSw8yW+LnWD/x9ueYz9ksnyRrJgcOa41izo/WCbjPK/j3JVezr9Q3x1yveWuFmdl7CGYdXngw=");
|
||||
public static final SkinData BIFF = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTc0NjEzMDQzNjYsInByb2ZpbGVJZCI6Ijg1MmE4YWNmNzMzNzQwZDc5OWVjYjA4ZmQ5OTY1MGI1IiwicHJvZmlsZU5hbWUiOiJLaW5nQ3JhenlfIiwic2lnbmF0dXJlUmVxdWlyZWQiOnRydWUsInRleHR1cmVzIjp7IlNLSU4iOnsidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9mOWMyMTE3ZDY0ZWE0ZmUxMWZiY2NhZmE2YzU5YzhlZjY3NDVkZjVkMTZjM2QwMmI4NmI2OTlmZWJjNTA0OGI1In19fQ==", "mJMpEvQ4A02z0S/chgLm5bKrrrd+zmp7A0012AB7b3KlyIHoLKEDDz+ZJgJtvN6skOqed3P+yNVqkxitugXaZZP8Af9J+/TseHn+vOy6CTK5tykRSY3Zb8Zmw1kn36v/SARAVtDIHD53yuPgJayYSAbVB7aknj1Q8XBQGUmZRMRxWWxeD7rQTOwgRYI4YJeKFf4UL9i6zxvOJuHsOAouJ7scu7VohG8vgR77Js/Z8rSu8/aSG+O9AQdzP6h9ixYNFkkQOHm7DseK/5tsWKHM4FYBgjIDKt3ApQokSbhThzGB55BA1qjXZkfCoOb13y1nOMC8WoIL6Ees1qzxG3VloGx2WAZLh+Q+/irwrFDMxk1zeU5fIRuj1c/UIM2HKdxxWgoRdrZ8ww/Jrll6maiOBx7geMn/0aOUbJ2U7gkTif6RG6YNS5YN9ZQDLh72l/akJMxF3SlmuAPmLs2kBghQ6eD2YQKuxWR/Hf1yS1YXtogFVNsGnzC1nda7F48EGL3zI+kCajbDlAGQ32aRt0btbEQ+Gj575kir3Aa53qiZ0YOIYQlhgZdOsTN2NE2s8uuy/15Rgc6K3ydgEmSZfdqyMyW0Dy7pE5TfVL8DumKRVRXdOceT5WfnW7MyqSmdorP5ab1fw2wLOnAVzhJmW8oXXNSs77WJ1/PURclxOWB4IF8=");
|
||||
public static final SkinData CANADA_HAT = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTg2MDE5MDYwNzYsInByb2ZpbGVJZCI6IjdkYTJhYjNhOTNjYTQ4ZWU4MzA0OGFmYzNiODBlNjhlIiwicHJvZmlsZU5hbWUiOiJHb2xkYXBmZWwiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2M2MTExNTNmODdmMjZjMzRmOTdkODIxM2ZmOTk1ZGJlNjcyZWJkNGM0NjRkNGFkNzM5MWFlNDNjMWU3YTllIn19fQ", "QMw6e1FXl/Xrt+BbfPKsz3OHyOxL9CEPffS9grxRLD6gbLbMD84OT3+bge5V9lBFn9PPnTyID+WTF24qHj4ADTTgK94ykNedCEO6R1wS0FZKPI1UjwOxMhIG5ZeVr7+HxITgGU4Xz94IigBkvW//f2ZGelMvS0GLCrm4iCovEBMUzyYJ2dZ4xgzFSH6v+9efK4/SBAJaj8mHjXpDxU58/vskTGI3T9t5sWlZLXgId9vHcMj0GH3Un6yvUXiMkh38V/rAEM8/R8q08xUVyW0e2R38qWQV2+eKvsG8GmJmgkU/78wA9cKGZdrEz0pnr80eGNCbvXqQvC/czYhEhDapgxfndcHLX8q/Zk3I8msNr340E4ZrQL61Yl7KcVC1qEUQVu3cosq5A6ckXLGvv//HSwXVO8M9ThUbuEC8QjiS/fMFufnVa18lHrVulnfb/2KQ4yPsoCHK/zvGtRkWtD1sLOIfehN+sxCLiaz80ILBiwN0oHITfNHpJzoa4kF/OrxxCualp4Sv5o5TXBv7aWsO18v9ixb9o9CmJKKE8MUl5xmRVz4HQD4dyOfcwtPuxmfcYjJrxqBijdQMrcgLzqqMs+DUqcZZlxM7M5GaNUoEvL9tJNGpZaB2OrBw0DTk5wx15XfANCH4egx8X4+Iy2RUoFthHX3BsVazG7fjSiDnUtI=");
|
||||
public static final SkinData AMERICA_HAT = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTg2MDI3MjMyODgsInByb2ZpbGVJZCI6IjNlMjZiMDk3MWFjZDRjNmQ5MzVjNmFkYjE1YjYyMDNhIiwicHJvZmlsZU5hbWUiOiJOYWhlbGUiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlLzYzMjI0MDhkYzBiZjMxNjU4N2RiNDJiN2Q5ZmViZTUwYWQ4MGY0OGU4Njc5YzI0NTFkOTk3MTdjZmVjNTdkYWQifX19","oRo6DIuhOTaXDkFsgwJ488LWqx5d1QpwtglwG1SdEvkbX1aCMGdZyDm9YIopQRjfBg0uYKQFetOZ1ZkdMmc/aKC5/dm0+Ema7g8AUzjwf4OaSLH1r4C1UJ4ruaNG5diBxNTkYnMa7yT8zvyEr22CA7lUOIgTh8ymBfSGK35RPhsn8jM0hDjdhjemBAlxKpiioByfmAQbwokNBOrXfh/PnKq+iJYg4WpMSZ1zo5Rr0CzLXwu+/T3dvrb6mg7qry7J3Lj5/qn6iIdBcjJBeyvy1sCo45jQ3Rzc6oL/84Vu5Dpn395EqUK8Sa7mdpVpATTcj56TCjkNNtDapXNqyO/IIQuzU4wnBKNQmZefaxRl6LV0DhZ8n8YQaPj6hH/mr2oDsd23+jejjqu6Y95ReTyukp06mIGqgekmrdZV2etML2oMAOTv9ieVvqtfo5gEomYs+NFAL7rMmzjAlhd17VOgqNRMpmJazAHWOYKl8KdOH99wGDe5XcyKHysh+qyHKMvhPJztIeAEaosynF/aGHghH2PM354KCuUVNmdR5G7UZUoG9ZA5ZU3EzZ854jeqxcqw3jzb6qL7A83QNuFqOsb87ugL/jO3QEDdQ9drdf3WAQauQGkU3nYBrls5wxoMrQ+Ceth+FtZw9a1v7dc+DEWOeJKCtOAIskb29pv6OcRe0Wk=");
|
||||
public static final SkinData REVOLUTIONARY = new SkinData("eyJ0aW1lc3RhbXAiOjE0OTg3ODQ5Mzk3NjAsInByb2ZpbGVJZCI6ImIwZDRiMjhiYzFkNzQ4ODlhZjBlODY2MWNlZTk2YWFiIiwicHJvZmlsZU5hbWUiOiJZZWxlaGEiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2I4NTBkZDNkYWQ0MjkxYzFhYmU4NGU2OTM2ZmQ3MDM0ZWVlZTk1OTk2MWI3YjE5NDZhODIxYWRlMTFiODI2YjIifX19","U2xBG+ryUacvZq3WreWF2J4QnQERuvp1okqdlkAYECqvVHz0cars78usPuZYD4s3HyOM0eGASzS4zkQERF6Hk8crnG+ZtqvML5kL+TkxK8gEbn2j5qB+YDG0qTx635mYGC77sGaqE/CsZAlhRYU6lyXILW2616Af8B8orOlpyCMRytijp/OfJREK0bC4I1QnB7AJ2QmBYuZJ9l8473858fJOlCVHjbsC/WRcUvepPSYYxvl8Z5NwayyIVnnz3tGVN6hnM7tzil/gQmsmDwGhlSyify/MEGssvd0sHLTlccA7XX98tyUFHXU84L5MJuNKg/uXTYz+9cRPIgJaptJNfqCoEa/ape+YHlOlK2lm5qRvubvp931X+VwFbcrEuaIFgbqr9cof5JW6DYfpVKvcngi9+K9IzgtPG59Jro5kxb70IfQhZcDkcHGo1pz5Tj7cdJdD7crBeIBaE/EoKU6iaSOrUFoILEdpcWQfaToRnk4L/JMet7zPXBNE/D/vEgQLGLNX7byofdCXSD9njtjLWmHg4rCzwuUqaiWnTCYIkkdg/mFuRQ3oTRRTzdlLXsK90Pz0XU9N6gBhWA9pxhzDJR7YK+mdXODALuMXE6zcCsbVuWhqbnN+EByGdjT9X1QPSN+/5iV9d5JyweiJrF7arf2PmxgEIb9OSjePNKRmHoo=");
|
||||
|
||||
// Comments this out for now, so it doesn't load the player profile
|
||||
// A better way to do this would check for the properties when getting the skull or the skin
|
||||
|
@ -418,4 +418,22 @@ public class UtilParticle
|
||||
PlayParticleToAll(particleType, location, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1f, count, dist);
|
||||
}
|
||||
|
||||
public static void playColoredParticle(java.awt.Color color, ParticleType particleType, Location location, int count, ViewDist dist, Player... players)
|
||||
{
|
||||
if (particleType != ParticleType.RED_DUST
|
||||
&& particleType != ParticleType.MOB_SPELL_AMBIENT)
|
||||
return;
|
||||
PlayParticle(particleType, location, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1f, count, dist, players);
|
||||
}
|
||||
|
||||
public static void playColoredParticleToAll(java.awt.Color color, ParticleType particleType, Location location, int count, ViewDist dist)
|
||||
{
|
||||
if (particleType != ParticleType.RED_DUST && particleType != ParticleType.MOB_SPELL_AMBIENT)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
PlayParticleToAll(particleType, location, color.getRed() / 255F, color.getGreen() / 255F, color.getBlue() / 255F, 1f, count, dist);
|
||||
}
|
||||
|
||||
}
|
@ -1,17 +1,33 @@
|
||||
package mineplex.core.common.util.banner;
|
||||
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.banner.Pattern;
|
||||
import org.bukkit.block.banner.PatternType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BannerMeta;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import static org.bukkit.DyeColor.*;
|
||||
import static org.bukkit.block.banner.PatternType.*;
|
||||
|
||||
public enum CountryFlag
|
||||
{
|
||||
// Vetted
|
||||
MINEPLEX("Mineplex", "Mineplexian", BLACK, new Pattern(ORANGE, TRIANGLE_TOP), new Pattern(BLACK, TRIANGLES_TOP),
|
||||
new Pattern(ORANGE, STRIPE_LEFT), new Pattern(ORANGE, STRIPE_RIGHT), new Pattern(BLACK, BORDER),
|
||||
new Pattern(BLACK, STRIPE_BOTTOM)),
|
||||
|
||||
USA("The United States of America", "American", RED, new Pattern(WHITE, STRIPE_SMALL), new Pattern(BLUE, SQUARE_TOP_RIGHT),
|
||||
new Pattern(BLUE, SQUARE_TOP_RIGHT), new Pattern(BLUE, SQUARE_TOP_RIGHT)),
|
||||
|
||||
CANADA("Canada", "Canadian", WHITE, new Pattern(RED, CROSS), new Pattern(WHITE, STRIPE_LEFT), new Pattern(RED, STRIPE_MIDDLE),
|
||||
new Pattern(WHITE, BORDER), new Pattern(RED, STRIPE_TOP), new Pattern(RED, STRIPE_BOTTOM)),
|
||||
|
||||
// Not Vetted
|
||||
BRAZIL(DyeColor.GREEN, new Pattern(DyeColor.YELLOW, PatternType.RHOMBUS_MIDDLE), new Pattern(DyeColor.BLUE, PatternType.CIRCLE_MIDDLE)),
|
||||
USA(DyeColor.RED, new Pattern(DyeColor.WHITE, PatternType.STRIPE_SMALL), new Pattern(DyeColor.BLUE, PatternType.SQUARE_TOP_RIGHT)),
|
||||
CANADA(DyeColor.WHITE, new Pattern(DyeColor.RED, PatternType.STRIPE_TOP), new Pattern(DyeColor.RED, PatternType.STRIPE_BOTTOM),
|
||||
new Pattern(DyeColor.RED, PatternType.CIRCLE_MIDDLE)),
|
||||
UK(DyeColor.BLUE, new Pattern(DyeColor.WHITE, PatternType.STRIPE_DOWNLEFT), new Pattern(DyeColor.WHITE, PatternType.STRIPE_DOWNRIGHT),
|
||||
new Pattern(DyeColor.RED, PatternType.STRAIGHT_CROSS), new Pattern(DyeColor.RED, PatternType.CROSS)),
|
||||
IRELAND(DyeColor.WHITE, new Pattern(DyeColor.LIME, PatternType.STRIPE_TOP), new Pattern(DyeColor.ORANGE, PatternType.STRIPE_BOTTOM)),
|
||||
@ -54,17 +70,57 @@ public enum CountryFlag
|
||||
new Pattern(DyeColor.GREEN, PatternType.STRIPE_CENTER), new Pattern(DyeColor.BLACK, PatternType.TRIANGLE_BOTTOM)),
|
||||
POLAND(DyeColor.RED, new Pattern(DyeColor.WHITE, PatternType.HALF_VERTICAL_MIRROR));
|
||||
|
||||
private DyeColor _baseColor;
|
||||
private Pattern[] _patterns;
|
||||
private final String _country;
|
||||
private final String _adjective;
|
||||
private final DyeColor _baseColor;
|
||||
private final Pattern[] _patterns;
|
||||
|
||||
CountryFlag(DyeColor baseColor, Pattern... patterns){
|
||||
CountryFlag(String country, String adjective, DyeColor baseColor, Pattern... patterns)
|
||||
{
|
||||
_country = country;
|
||||
_adjective = adjective;
|
||||
_baseColor = baseColor;
|
||||
_patterns = patterns;
|
||||
}
|
||||
|
||||
CountryFlag(DyeColor baseColor, Pattern... patterns)
|
||||
{
|
||||
this("", "", baseColor, patterns);
|
||||
}
|
||||
|
||||
public ItemStack getBanner()
|
||||
{
|
||||
return UtilBanner.createBanner(_baseColor, _patterns);
|
||||
ItemStack banner = new ItemStack(Material.BANNER);
|
||||
BannerMeta bannerMeta = (BannerMeta) banner.getItemMeta();
|
||||
bannerMeta.setBaseColor(_baseColor);
|
||||
|
||||
for (Pattern pattern : _patterns)
|
||||
{
|
||||
bannerMeta.addPattern(pattern);
|
||||
}
|
||||
|
||||
banner.setItemMeta(bannerMeta);
|
||||
return banner;
|
||||
}
|
||||
|
||||
public String getCountryName()
|
||||
{
|
||||
return _country;
|
||||
}
|
||||
|
||||
public String getCountryAdjective()
|
||||
{
|
||||
return _adjective;
|
||||
}
|
||||
|
||||
public DyeColor getBaseColor()
|
||||
{
|
||||
return _baseColor;
|
||||
}
|
||||
|
||||
public List<Pattern> getPatterns()
|
||||
{
|
||||
return Arrays.asList(_patterns);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,6 @@
|
||||
package mineplex.core.cosmetic;
|
||||
|
||||
import mineplex.core.punish.Punish;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
@ -41,19 +42,23 @@ import mineplex.core.twofactor.TwoFactorAuth;
|
||||
public class CosmeticManager extends MiniPlugin
|
||||
{
|
||||
private final TwoFactorAuth _twofactor = Managers.require(TwoFactorAuth.class);
|
||||
private InventoryManager _inventoryManager;
|
||||
private GadgetManager _gadgetManager;
|
||||
private MountManager _mountManager;
|
||||
private PetManager _petManager;
|
||||
private TreasureManager _treasureManager;
|
||||
private BoosterManager _boosterManager;
|
||||
private final InventoryManager _inventoryManager;
|
||||
private final GadgetManager _gadgetManager;
|
||||
private final MountManager _mountManager;
|
||||
private final PetManager _petManager;
|
||||
private final TreasureManager _treasureManager;
|
||||
private final BoosterManager _boosterManager;
|
||||
private final Punish _punish;
|
||||
|
||||
private CosmeticShop _shop;
|
||||
|
||||
private boolean _showInterface = true;
|
||||
private int _interfaceSlot = 4;
|
||||
|
||||
public CosmeticManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager, InventoryManager inventoryManager, GadgetManager gadgetManager, MountManager mountManager, PetManager petManager, TreasureManager treasureManager, BoosterManager boosterManager)
|
||||
public CosmeticManager(JavaPlugin plugin, CoreClientManager clientManager, DonationManager donationManager,
|
||||
InventoryManager inventoryManager, GadgetManager gadgetManager, MountManager mountManager,
|
||||
PetManager petManager, TreasureManager treasureManager, BoosterManager boosterManager,
|
||||
Punish punish)
|
||||
{
|
||||
super("Cosmetic Manager", plugin);
|
||||
|
||||
@ -63,6 +68,7 @@ public class CosmeticManager extends MiniPlugin
|
||||
_petManager = petManager;
|
||||
_treasureManager = treasureManager;
|
||||
_boosterManager = boosterManager;
|
||||
_punish = punish;
|
||||
|
||||
_shop = new CosmeticShop(this, clientManager, donationManager, _moduleName);
|
||||
}
|
||||
@ -242,6 +248,11 @@ public class CosmeticManager extends MiniPlugin
|
||||
{
|
||||
return _boosterManager;
|
||||
}
|
||||
|
||||
public Punish getPunishManager()
|
||||
{
|
||||
return _punish;
|
||||
}
|
||||
|
||||
public void displayUI(Player player)
|
||||
{
|
||||
|
@ -0,0 +1,25 @@
|
||||
package mineplex.core.cosmetic.ui.button.open;
|
||||
|
||||
import mineplex.core.cosmetic.ui.page.FlagPage;
|
||||
import mineplex.core.cosmetic.ui.page.HatPage;
|
||||
import mineplex.core.cosmetic.ui.page.Menu;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* @author J Teissler
|
||||
* @date 6/26/17
|
||||
*/
|
||||
public class OpenFlags extends OpenPageButton
|
||||
{
|
||||
public OpenFlags(Menu menu, Gadget active)
|
||||
{
|
||||
super(menu, active);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void leftClick(Player player)
|
||||
{
|
||||
getMenu().getShop().openPageForPlayer(player, new FlagPage(getMenu().getPlugin(), getMenu().getShop(), getMenu().getClientManager(), getMenu().getDonationManager(), "Flags", player));
|
||||
}
|
||||
}
|
@ -33,12 +33,16 @@ public class ArrowTrailPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.ARROW_TRAIL) == gadget)
|
||||
addGlow(slot);
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17)
|
||||
slot += 2;
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -32,12 +32,16 @@ public class BalloonsPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (gadget.isActive(getPlayer()))
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26)
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -22,9 +22,6 @@ import mineplex.core.gadget.types.OutfitGadget;
|
||||
import mineplex.core.shop.item.IButton;
|
||||
import mineplex.core.shop.item.ShopItem;
|
||||
|
||||
/**
|
||||
* Created by shaun on 14-09-15.
|
||||
*/
|
||||
public class CostumePage extends GadgetPage
|
||||
{
|
||||
public CostumePage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player)
|
||||
|
@ -33,12 +33,16 @@ public class DeathEffectPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.DEATH) == gadget)
|
||||
addGlow(slot);
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17)
|
||||
slot += 2;
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -33,12 +33,16 @@ public class DoubleJumpPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.DOUBLE_JUMP) == gadget)
|
||||
addGlow(slot);
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17)
|
||||
slot += 2;
|
||||
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -0,0 +1,58 @@
|
||||
package mineplex.core.cosmetic.ui.page;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.cosmetic.CosmeticManager;
|
||||
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||
import mineplex.core.donation.DonationManager;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.shop.item.IButton;
|
||||
import mineplex.core.shop.item.ShopItem;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class FlagPage extends GadgetPage
|
||||
{
|
||||
public FlagPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name,
|
||||
Player player)
|
||||
{
|
||||
super(plugin, shop, clientManager, donationManager, name, player);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void buildPage()
|
||||
{
|
||||
int slot = 10;
|
||||
|
||||
List<Gadget> list = getPlugin().getGadgetManager().getGadgets(GadgetType.FLAG);
|
||||
if(list != null)
|
||||
for (Gadget gadget : list)
|
||||
{
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.FLAG) == gadget)
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
{
|
||||
public void onClick(Player player, ClickType clickType)
|
||||
{
|
||||
getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player));
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
@ -12,7 +12,6 @@ import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.inventory.ClickType;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BannerMeta;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
@ -21,7 +20,6 @@ import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.cosmetic.CosmeticManager;
|
||||
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||
import mineplex.core.cosmetic.ui.button.GadgetButton;
|
||||
@ -60,12 +58,16 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getInventoryManager().Get(getPlayer()).getItemCount(gadget.getDisplayName()) > 0)
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26)
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
@ -366,19 +368,6 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
meta.setLore(itemLore);
|
||||
gadgetItemStack.setItemMeta(meta);
|
||||
|
||||
if (gadget.getGadgetType() == GadgetType.ARROW_TRAIL || gadget.getGadgetType() == GadgetType.DEATH
|
||||
|| gadget.getGadgetType() == GadgetType.PARTICLE || gadget.getGadgetType() == GadgetType.DOUBLE_JUMP)
|
||||
{
|
||||
if (gadget.getCost(GlobalCurrency.TREASURE_SHARD) == -8)
|
||||
{
|
||||
gadgetItemStack = CountryFlag.USA.getBanner();
|
||||
BannerMeta bannerMeta = (BannerMeta) gadgetItemStack.getItemMeta();
|
||||
bannerMeta.setDisplayName(C.cGreen + C.Bold + gadget.getName());
|
||||
bannerMeta.setLore(meta.getLore());
|
||||
gadgetItemStack.setItemMeta(bannerMeta);
|
||||
}
|
||||
}
|
||||
|
||||
addButton(slot, new ShopItem(gadgetItemStack, false, false).hideInfo(), new DeactivateGadgetButton(gadget, this));
|
||||
}
|
||||
else
|
||||
@ -389,19 +378,6 @@ public class GadgetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
meta.setLore(itemLore);
|
||||
gadgetItemStack.setItemMeta(meta);
|
||||
|
||||
if (gadget.getGadgetType() == GadgetType.ARROW_TRAIL || gadget.getGadgetType() == GadgetType.DEATH
|
||||
|| gadget.getGadgetType() == GadgetType.PARTICLE || gadget.getGadgetType() == GadgetType.DOUBLE_JUMP)
|
||||
{
|
||||
if (gadget.getCost(GlobalCurrency.TREASURE_SHARD) == -8)
|
||||
{
|
||||
gadgetItemStack = CountryFlag.USA.getBanner();
|
||||
BannerMeta bannerMeta = (BannerMeta) gadgetItemStack.getItemMeta();
|
||||
bannerMeta.setDisplayName(C.cGreen + C.Bold + gadget.getName());
|
||||
bannerMeta.setLore(meta.getLore());
|
||||
gadgetItemStack.setItemMeta(bannerMeta);
|
||||
}
|
||||
}
|
||||
|
||||
/*if (gadget instanceof MorphStray)
|
||||
{
|
||||
gadgetItemStack = UtilItem.getVersionSpecificItem(_player, UtilPlayer.PlayerVersion._1_9, gadgetItemStack);
|
||||
|
@ -38,12 +38,16 @@ public class HatPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.HAT) == gadget)
|
||||
addGlow(slot);
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17)
|
||||
slot += 2;
|
||||
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -31,12 +31,16 @@ public class KitSelectorPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.KIT_SELECTOR) == gadget)
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26 || slot == 35)
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -5,6 +5,9 @@ import java.util.EnumMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.cosmetic.ui.button.open.OpenFlags;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -14,7 +17,6 @@ import mineplex.core.common.currency.GlobalCurrency;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.UtilUI;
|
||||
import mineplex.core.cosmetic.CosmeticManager;
|
||||
import mineplex.core.cosmetic.ui.CosmeticShop;
|
||||
import mineplex.core.cosmetic.ui.button.open.OpenArrowTrails;
|
||||
@ -40,6 +42,9 @@ import mineplex.core.mount.Mount;
|
||||
import mineplex.core.pet.PetType;
|
||||
import mineplex.core.shop.item.ShopItem;
|
||||
import mineplex.core.shop.page.ShopPageBase;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BannerMeta;
|
||||
|
||||
public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
{
|
||||
@ -64,35 +69,46 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
|
||||
List<String> shardLore = new ArrayList<String>();
|
||||
shardLore.add(" ");
|
||||
shardLore.add(C.cGray + "This seems like it might come in");
|
||||
shardLore.add(C.cGray + "handy. Maybe I can collect more!");
|
||||
shardLore.add(C.cGray + "These seem like they might come in");
|
||||
shardLore.add(C.cGray + "handy. Maybe I should collect more!");
|
||||
|
||||
ShopItem shards = new ShopItem(Material.PRISMARINE_SHARD, C.cAqua + C.Bold + treasureShards + " Treasure Shards", shardLore.toArray(new String[0]), 0, false);
|
||||
|
||||
// Cosmetic Items
|
||||
int[] slots = UtilUI.getIndicesFor(15, 0, 5, 1);
|
||||
/*int particleSlot = 9;//slots[0];
|
||||
int arrowSlot = 11;//slots[1];
|
||||
int jumpSlot = 13;//slots[2];
|
||||
int deathSlot = 15;//slots[3];
|
||||
int gadgetSlot = 27;//slots[4];
|
||||
int morphSlot = 29;//slots[5];
|
||||
int mountSlot = 31;//slots[6];
|
||||
int petSlot = 33;//slots[7];
|
||||
int hatSlot = 35;//slots[8];
|
||||
int costumeSlot = 45;//slots[9];
|
||||
int musicSlot = 47;//slots[10];
|
||||
int tauntSlot = 49;//slots[11];
|
||||
int winEffectSlot = 51;
|
||||
int gameModifierSlot = 53;*/
|
||||
int particleSlot = slots[0], arrowSlot = slots[1], jumpSlot = slots[2],
|
||||
deathSlot = slots[3], gadgetSlot = slots[4], morphSlot = slots[5],
|
||||
mountSlot = slots[6], petSlot = slots[7], hatSlot = slots[8],
|
||||
costumeSlot = slots[9], musicSlot = slots[10], tauntSlot = slots[11],
|
||||
winEffectSlot = slots[12], gameModifierSlot = slots[13], balloonsSlot = slots[14],
|
||||
kitSelectorSlot = balloonsSlot + 4;
|
||||
int deathSlot = 19;
|
||||
int jumpSlot = 28;
|
||||
int particleSlot = 1;
|
||||
int winEffectSlot = 13;
|
||||
int shardSlot = 22;
|
||||
int arrowSlot = 10;
|
||||
int tauntSlot = 31;
|
||||
int gameModifierSlot = 21;
|
||||
int kitSelectorSlot = 23;
|
||||
int musicSlot = 48;
|
||||
int mountSlot = 50;
|
||||
int balloonsSlot = 47;
|
||||
int petSlot = 51;
|
||||
int gadgetSlot = 49;
|
||||
int hatSlot = 7;
|
||||
int flagSlot = 34;
|
||||
int morphSlot = 25;
|
||||
int costumeSlot = 16;
|
||||
|
||||
addItem(shardSlot, shards);
|
||||
|
||||
ItemStack pane = new ItemBuilder(Material.STAINED_GLASS_PANE).setData((byte)15).setTitle(C.cBlack).build();
|
||||
for (int i = 0; i <= 45; i += 9) addItem(i, pane.clone());
|
||||
for (int i = 8; i <= 53; i += 9) addItem(i, pane.clone());
|
||||
for (int i = 37; i <= 43; ++i) addItem(i, pane.clone());
|
||||
for (int i = 2; i <= 6; ++i) addItem(i, pane.clone());
|
||||
for (int i = 11; i <= 29; i += 9) addItem(i, pane.clone());
|
||||
for (int i = 15; i <= 33; i += 9) addItem(i, pane.clone());
|
||||
addItem(12, pane.clone());
|
||||
addItem(14, pane.clone());
|
||||
addItem(30, pane.clone());
|
||||
addItem(32, pane.clone());
|
||||
addItem(46, pane.clone());
|
||||
addItem(52, pane.clone());
|
||||
|
||||
addItem(kitSelectorSlot + 2, shards);
|
||||
|
||||
EnumMap<GadgetType, Integer> ownedCount = new EnumMap<>(GadgetType.class);
|
||||
EnumMap<GadgetType, Integer> maxCount = new EnumMap<>(GadgetType.class);
|
||||
@ -187,13 +203,13 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
if (petActive != null) addGlow(petSlot);
|
||||
|
||||
type = GadgetType.HAT;
|
||||
lore = getLore(ownedCount.get(type), maxCount.get(type), "Hats are in this year. Wear them on your head to impress the ladies.", VISIBILITY_HUB, enabled.get(type));
|
||||
lore = getLore(ownedCount.get(type), maxCount.get(type), "Hats are in this year. Wear them on your head to impress the others.", VISIBILITY_HUB, enabled.get(type));
|
||||
addButton(hatSlot, new ShopItem(Material.GOLD_HELMET, "Hats", lore, 1, false), new OpenHats(this, enabled.get(type)));
|
||||
if (enabled.containsKey(type)) addGlow(hatSlot);
|
||||
|
||||
type = GadgetType.COSTUME;
|
||||
// -4 Fixes more than the real costumes being counted (Happens because of the hub games costumes
|
||||
lore = getLore(ownedCount.get(type) - 4, maxCount.get(type) - 4, "Sometimes going out calls for special clothes! Gain bonus effects for matching outfit.", VISIBILITY_HUB, enabled.get(type));
|
||||
lore = getLore(ownedCount.get(type), maxCount.get(type) - 4, "Sometimes going out calls for special clothes! Gain bonus effects for matching outfit.", VISIBILITY_HUB, enabled.get(type));
|
||||
addButton(costumeSlot, new ShopItem(Material.DIAMOND_CHESTPLATE, "Costumes", lore, 1, false), new OpenCostumes(this, enabled.get(type)));
|
||||
if (enabled.containsKey(type)) addGlow(costumeSlot);
|
||||
|
||||
@ -227,6 +243,19 @@ public class Menu extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
lore = getLore(ownedCount.get(type), maxCount.get(type), "Click here to select different particles to indicate which kit you have selected!", VISIBILITY_GAME_HUB, enabled.get(type));
|
||||
addButton(kitSelectorSlot, new ShopItem(Material.LEVER, "Kit Selector Particles", lore, 1, false), new OpenKitSelector(this, enabled.get(type)));
|
||||
if (enabled.containsKey(type)) addGlow(kitSelectorSlot);
|
||||
|
||||
type = GadgetType.FLAG;
|
||||
lore = getLore(ownedCount.get(type), maxCount.get(type), "Show off your country's flag!", VISIBILITY_HUB, enabled.get(type));
|
||||
addButton(flagSlot, new ShopItem(Material.BANNER, "Flags", lore, 1, false), new OpenFlags(this, enabled.get(type)));
|
||||
if (enabled.containsKey(type)) addGlow(flagSlot);
|
||||
|
||||
// Copy over banner design
|
||||
BannerMeta banner = (BannerMeta) CountryFlag.MINEPLEX.getBanner().getItemMeta();
|
||||
BannerMeta meta = ((BannerMeta) getItem(flagSlot).getItemMeta());
|
||||
meta.setBaseColor(banner.getBaseColor());
|
||||
meta.setPatterns(banner.getPatterns());
|
||||
meta.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);
|
||||
getItem(flagSlot).setItemMeta(meta);
|
||||
}
|
||||
|
||||
private String[] getLore(int ownedCount, int maxCount, String info, String visibility, Gadget enabled)
|
||||
|
@ -32,13 +32,19 @@ public class MorphPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.MORPH) == gadget)
|
||||
if (!(gadget instanceof MorphBlock))
|
||||
addGlow(slot);
|
||||
{
|
||||
if (!(gadget instanceof MorphBlock))
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26 || slot == 35)
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -46,8 +46,10 @@ public class MountPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
addMount(mount, slot);
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26)
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -14,9 +14,6 @@ import mineplex.core.gadget.types.GadgetType;
|
||||
import mineplex.core.shop.item.ShopItem;
|
||||
import mineplex.core.shop.item.IButton;
|
||||
|
||||
/**
|
||||
* Created by shaun on 14-09-15.
|
||||
*/
|
||||
public class MusicPage extends GadgetPage
|
||||
{
|
||||
public MusicPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player)
|
||||
@ -34,8 +31,10 @@ public class MusicPage extends GadgetPage
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17)
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -31,12 +31,16 @@ public class ParticlePage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.PARTICLE) == gadget)
|
||||
addGlow(slot);
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26 || slot == 35)
|
||||
slot += 2;
|
||||
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -231,16 +231,23 @@ public class PetPage extends ShopPageBase<CosmeticManager, CosmeticShop>
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26)
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
slot = 49;
|
||||
for (PetExtra petExtra : PetExtra.values())
|
||||
{
|
||||
List<String> itemLore = new ArrayList<String>();
|
||||
|
||||
if (!getPlugin().getPetManager().hasActivePet(getPlayer().getName()))
|
||||
|
||||
if (getPlugin().getPunishManager().GetClient(_player.getName()).IsMuted())
|
||||
{
|
||||
itemLore.add(C.cRed + "You may not rename pets while muted!");
|
||||
getInventory().setItem(slot, new ShopItem(petExtra.getMaterial(), (byte)0, C.cRed + petExtra.getName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false).getHandle());
|
||||
}
|
||||
else if (!getPlugin().getPetManager().hasActivePet(getPlayer().getName()))
|
||||
{
|
||||
itemLore.add(C.cWhite + "You must have an active pet to use this!");
|
||||
getInventory().setItem(slot, new ShopItem(petExtra.getMaterial(), (byte)0, C.cRed + petExtra.getName(), itemLore.toArray(new String[itemLore.size()]), 1, true, false).getHandle());
|
||||
|
@ -38,12 +38,16 @@ public class TauntPage extends GadgetPage
|
||||
addGadget(gadget, slot);
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.TAUNT) == gadget)
|
||||
addGlow(slot);
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 26)
|
||||
slot += 2;
|
||||
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -49,12 +49,16 @@ public class WinEffectPage extends GadgetPage
|
||||
}
|
||||
|
||||
if (getPlugin().getGadgetManager().getActive(getPlayer(), GadgetType.WIN_EFFECT) == gadget)
|
||||
addGlow(slot);
|
||||
{
|
||||
addGlow(slot);
|
||||
}
|
||||
|
||||
slot++;
|
||||
|
||||
if (slot == 17 || slot == 26)
|
||||
slot += 2;
|
||||
|
||||
if (slot % 9 == 8)
|
||||
{
|
||||
slot += 2;
|
||||
}
|
||||
}
|
||||
|
||||
addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[]{}, 1, false), new IButton()
|
||||
|
@ -1,9 +1,14 @@
|
||||
package mineplex.core.cosmetic.ui.page.custompet.name;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.UtilItem;
|
||||
import mineplex.core.itemstack.ItemBuilder;
|
||||
import mineplex.core.punish.PunishClient;
|
||||
import net.minecraft.server.v1_8_R3.ItemStack;
|
||||
import net.minecraft.server.v1_8_R3.Items;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import mineplex.core.account.CoreClientManager;
|
||||
@ -34,6 +39,7 @@ public class CustomPetTagPage extends ShopPageBase<CosmeticManager, CosmeticShop
|
||||
getButtonMap().put(0, new CloseCustomPetButton());
|
||||
getButtonMap().put(1, new CloseCustomPetButton());
|
||||
getButtonMap().put(2, new SelectCustomPetTagButton(this));
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -10,7 +10,18 @@ import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.function.Predicate;
|
||||
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailRedWhite;
|
||||
import mineplex.core.gadget.gadgets.death.DeathMapleLeaf;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMaple;
|
||||
import mineplex.core.gadget.gadgets.flag.FlagType;
|
||||
import mineplex.core.gadget.gadgets.morph.MorphBobRoss;
|
||||
import mineplex.core.gadget.gadgets.morph.MorphFreedomFighter;
|
||||
import mineplex.core.gadget.gadgets.particle.freedom.ParticleAuraNiceness;
|
||||
import mineplex.core.gadget.gadgets.particle.freedom.ParticleCanadian;
|
||||
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedomFireworks;
|
||||
import mineplex.core.gadget.gadgets.particle.freedom.ParticleStarSpangled;
|
||||
import mineplex.core.gadget.set.SetCanadian;
|
||||
import mineplex.core.gadget.types.FlagGadget;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -47,50 +58,50 @@ import mineplex.core.gadget.event.GadgetCollideEntityEvent;
|
||||
import mineplex.core.gadget.event.GadgetEnableEvent;
|
||||
import mineplex.core.gadget.event.PlayerToggleSwimEvent;
|
||||
import mineplex.core.gadget.event.TauntCommandEvent;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.candycane.ArrowTrailCandyCane;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.cupidslove.ArrowTrailCupid;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.emerald.ArrowTrailEmerald;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.freedom.ArrowTrailFreedom;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.frostlord.ArrowTrailFrostLord;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.halloween.ArrowTrailHalloween;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.howlingwinds.ArrowTrailStorm;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.music.ArrowTrailMusic;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.party.ArrowTrailConfetti;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.shadow.ArrowTrailShadow;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.spring.ArrowTrailSpring;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.titan.ArrowTrailTitan;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.vampire.ArrowTrailBlood;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.wisdom.ArrowTrailEnchant;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCupid;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEmerald;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFreedom;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailHalloween;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailStorm;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailMusic;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailConfetti;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailShadow;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailSpring;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailTitan;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailBlood;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEnchant;
|
||||
import mineplex.core.gadget.gadgets.balloons.BalloonItem;
|
||||
import mineplex.core.gadget.gadgets.balloons.BalloonType;
|
||||
import mineplex.core.gadget.gadgets.death.candycane.DeathCandyCane;
|
||||
import mineplex.core.gadget.gadgets.death.christmas.DeathPresentDanger;
|
||||
import mineplex.core.gadget.gadgets.death.cupidslove.DeathCupidsBrokenHeart;
|
||||
import mineplex.core.gadget.gadgets.death.emerald.DeathEmerald;
|
||||
import mineplex.core.gadget.gadgets.death.freedom.DeathFreedom;
|
||||
import mineplex.core.gadget.gadgets.death.frostlord.DeathFrostLord;
|
||||
import mineplex.core.gadget.gadgets.death.howlingwinds.DeathStorm;
|
||||
import mineplex.core.gadget.gadgets.death.music.DeathMusic;
|
||||
import mineplex.core.gadget.gadgets.death.party.DeathPinataBurst;
|
||||
import mineplex.core.gadget.gadgets.death.shadow.DeathShadow;
|
||||
import mineplex.core.gadget.gadgets.death.spring.DeathSpring;
|
||||
import mineplex.core.gadget.gadgets.death.titan.DeathTitan;
|
||||
import mineplex.core.gadget.gadgets.death.vampire.DeathBlood;
|
||||
import mineplex.core.gadget.gadgets.death.wisdom.DeathEnchant;
|
||||
import mineplex.core.gadget.gadgets.doublejump.candycane.DoubleJumpCandyCane;
|
||||
import mineplex.core.gadget.gadgets.doublejump.cupidslove.DoubleJumpCupidsWings;
|
||||
import mineplex.core.gadget.gadgets.doublejump.emerald.DoubleJumpEmerald;
|
||||
import mineplex.core.gadget.gadgets.doublejump.freedom.DoubleJumpFreedom;
|
||||
import mineplex.core.gadget.gadgets.doublejump.frostlord.DoubleJumpFrostLord;
|
||||
import mineplex.core.gadget.gadgets.doublejump.halloween.DoubleJumpHalloween;
|
||||
import mineplex.core.gadget.gadgets.doublejump.howlingwinds.DoubleJumpStorm;
|
||||
import mineplex.core.gadget.gadgets.doublejump.music.DoubleJumpMusic;
|
||||
import mineplex.core.gadget.gadgets.doublejump.party.DoubleJumpFirecracker;
|
||||
import mineplex.core.gadget.gadgets.doublejump.shadow.DoubleJumpShadow;
|
||||
import mineplex.core.gadget.gadgets.doublejump.spring.DoubleJumpSpring;
|
||||
import mineplex.core.gadget.gadgets.doublejump.titan.DoubleJumpTitan;
|
||||
import mineplex.core.gadget.gadgets.doublejump.vampire.DoubleJumpBlood;
|
||||
import mineplex.core.gadget.gadgets.doublejump.wisdom.DoubleJumpEnchant;
|
||||
import mineplex.core.gadget.gadgets.death.DeathCandyCane;
|
||||
import mineplex.core.gadget.gadgets.death.DeathPresentDanger;
|
||||
import mineplex.core.gadget.gadgets.death.DeathCupidsBrokenHeart;
|
||||
import mineplex.core.gadget.gadgets.death.DeathEmerald;
|
||||
import mineplex.core.gadget.gadgets.death.DeathFreedom;
|
||||
import mineplex.core.gadget.gadgets.death.DeathFrostLord;
|
||||
import mineplex.core.gadget.gadgets.death.DeathStorm;
|
||||
import mineplex.core.gadget.gadgets.death.DeathMusic;
|
||||
import mineplex.core.gadget.gadgets.death.DeathPinataBurst;
|
||||
import mineplex.core.gadget.gadgets.death.DeathShadow;
|
||||
import mineplex.core.gadget.gadgets.death.DeathSpring;
|
||||
import mineplex.core.gadget.gadgets.death.DeathTitan;
|
||||
import mineplex.core.gadget.gadgets.death.DeathBlood;
|
||||
import mineplex.core.gadget.gadgets.death.DeathEnchant;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCupidsWings;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEmerald;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFreedom;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpHalloween;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpStorm;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMusic;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFirecracker;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpShadow;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpSpring;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpTitan;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpBlood;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEnchant;
|
||||
import mineplex.core.gadget.gadgets.gamemodifiers.GameModifierType;
|
||||
import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.GameModifierMount;
|
||||
import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.MountType;
|
||||
@ -185,19 +196,19 @@ import mineplex.core.gadget.gadgets.particle.ParticleWingsInfernal;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsLove;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleWingsPixie;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleYinYang;
|
||||
import mineplex.core.gadget.gadgets.particle.candycane.ParticleCandyCane;
|
||||
import mineplex.core.gadget.gadgets.particle.cupidslove.ParticleHeart;
|
||||
import mineplex.core.gadget.gadgets.particle.emerald.ParticleEmerald;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleCandyCane;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleHeart;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleEmerald;
|
||||
import mineplex.core.gadget.gadgets.particle.freedom.ParticleFreedom;
|
||||
import mineplex.core.gadget.gadgets.particle.frostlord.ParticleFrostLord;
|
||||
import mineplex.core.gadget.gadgets.particle.howlingwinds.ParticleRain;
|
||||
import mineplex.core.gadget.gadgets.particle.music.ParticleMusic;
|
||||
import mineplex.core.gadget.gadgets.particle.party.ParticlePartyTime;
|
||||
import mineplex.core.gadget.gadgets.particle.shadow.ParticleFoot;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleFrostLord;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleRain;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleMusic;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticlePartyTime;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleFoot;
|
||||
import mineplex.core.gadget.gadgets.particle.spring.ParticleSpringHalo;
|
||||
import mineplex.core.gadget.gadgets.particle.titan.ParticleTitan;
|
||||
import mineplex.core.gadget.gadgets.particle.vampire.ParticleBlood;
|
||||
import mineplex.core.gadget.gadgets.particle.wisdom.ParticleEnchant;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleTitan;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleBlood;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleEnchant;
|
||||
import mineplex.core.gadget.gadgets.taunts.BlowAKissTaunt;
|
||||
import mineplex.core.gadget.gadgets.taunts.EternalTaunt;
|
||||
import mineplex.core.gadget.gadgets.taunts.RainbowTaunt;
|
||||
@ -366,6 +377,7 @@ public class GadgetManager extends MiniPlugin
|
||||
addSet(new SetMusic(this));
|
||||
addSet(new SetFreedom(this));
|
||||
addSet(new SetSpring(this));
|
||||
addSet(new SetCanadian(this));
|
||||
}
|
||||
|
||||
private void createGadgets()
|
||||
@ -456,34 +468,44 @@ public class GadgetManager extends MiniPlugin
|
||||
addGadget(new MorphGoldPot(this));
|
||||
addGadget(new MorphAwkwardRabbit(this));
|
||||
addGadget(new MorphBobRoss(this, _hologramManager));
|
||||
addGadget(new MorphFreedomFighter(this));
|
||||
|
||||
// Particles
|
||||
addGadget(new ParticleFoot(this));
|
||||
addGadget(new ParticleFireRings(this));
|
||||
addGadget(new ParticleFairy(this));
|
||||
addGadget(new ParticleLegend(this));
|
||||
addGadget(new ParticleFrostLord(this));
|
||||
addGadget(new ParticleTitan(this));
|
||||
addGadget(new ParticleCandyCane(this));
|
||||
addGadget(new ParticleCoalFumes(this));
|
||||
addGadget(new ParticlePartyTime(this));
|
||||
addGadget(new ParticleHeart(this));
|
||||
addGadget(new ParticleEmerald(this));
|
||||
addGadget(new ParticleWingsDemons(this));
|
||||
addGadget(new ParticleEnchant(this));
|
||||
addGadget(new ParticleRain(this));
|
||||
addGadget(new ParticleBlood(this));
|
||||
addGadget(new ParticleEnchant(this));
|
||||
addGadget(new ParticleMusic(this));
|
||||
addGadget(new ParticleWingsAngel(this));
|
||||
addGadget(new ParticleWingsInfernal(this));
|
||||
addGadget(new ParticleWingsPixie(this));
|
||||
addGadget(new ParticlePartyTime(this));
|
||||
|
||||
addGadget(new ParticleHeart(this));
|
||||
addGadget(new ParticleCandyCane(this));
|
||||
addGadget(new ParticleFrostLord(this));
|
||||
addGadget(new ParticleLegend(this));
|
||||
addGadget(new ParticleTitan(this));
|
||||
addGadget(new ParticleYinYang(this));
|
||||
addGadget(new ParticleFreedom(this));
|
||||
addGadget(new ParticleChristmasTree(this));
|
||||
addGadget(new ParticleKing(this, _castleManager));
|
||||
|
||||
addGadget(new ParticleWingsPixie(this));
|
||||
addGadget(new ParticleWingsDemons(this));
|
||||
addGadget(new ParticleWingsInfernal(this));
|
||||
addGadget(new ParticleWingsAngel(this));
|
||||
addGadget(new ParticleWingsLove(this));
|
||||
addGadget(new ParticleFireRings(this));
|
||||
addGadget(new ParticleFairy(this));
|
||||
|
||||
addGadget(new ParticleChristmasTree(this));
|
||||
addGadget(new ParticleCoalFumes(this));
|
||||
addGadget(new ParticleSpringHalo(this));
|
||||
addGadget(new ParticleWingsBee(this));
|
||||
addGadget(new ParticleKing(this, _castleManager));
|
||||
|
||||
addGadget(new ParticleFreedom(this));
|
||||
addGadget(new ParticleFreedomFireworks(this));
|
||||
addGadget(new ParticleStarSpangled(this));
|
||||
addGadget(new ParticleAuraNiceness(this));
|
||||
addGadget(new ParticleCanadian(this));
|
||||
|
||||
|
||||
// Arrow Trails
|
||||
addGadget(new ArrowTrailFrostLord(this));
|
||||
@ -500,6 +522,7 @@ public class GadgetManager extends MiniPlugin
|
||||
addGadget(new ArrowTrailFreedom(this));
|
||||
addGadget(new ArrowTrailHalloween(this));
|
||||
addGadget(new ArrowTrailSpring(this));
|
||||
addGadget(new ArrowTrailRedWhite(this));
|
||||
|
||||
// Death Effect
|
||||
addGadget(new DeathFrostLord(this));
|
||||
@ -516,6 +539,7 @@ public class GadgetManager extends MiniPlugin
|
||||
addGadget(new DeathFreedom(this));
|
||||
addGadget(new DeathPresentDanger(this));
|
||||
addGadget(new DeathSpring(this));
|
||||
addGadget(new DeathMapleLeaf(this));
|
||||
|
||||
// Double Jump
|
||||
addGadget(new DoubleJumpFrostLord(this));
|
||||
@ -532,6 +556,7 @@ public class GadgetManager extends MiniPlugin
|
||||
addGadget(new DoubleJumpFreedom(this));
|
||||
addGadget(new DoubleJumpHalloween(this));
|
||||
addGadget(new DoubleJumpSpring(this));
|
||||
addGadget(new DoubleJumpMaple(this));
|
||||
|
||||
// Hat
|
||||
for (HatType hatType : HatType.values())
|
||||
@ -625,6 +650,10 @@ public class GadgetManager extends MiniPlugin
|
||||
addGadget(new BlowAKissTaunt(this));
|
||||
addGadget(new RainbowTaunt(this));
|
||||
|
||||
// Flags
|
||||
addGadget(new FlagGadget(this, FlagType.UNITED_STATES));
|
||||
addGadget(new FlagGadget(this, FlagType.CANADA));
|
||||
|
||||
// Kit Selectors
|
||||
addGadget(new WaterWingsKitSelector(this));
|
||||
addGadget(new HaloKitSelector(this));
|
||||
@ -830,6 +859,23 @@ public class GadgetManager extends MiniPlugin
|
||||
return null;
|
||||
}
|
||||
|
||||
public FlagGadget getFlagGadget(FlagType type)
|
||||
{
|
||||
for (Gadget gadget : getGadgets(GadgetType.FLAG))
|
||||
{
|
||||
if(gadget instanceof FlagGadget)
|
||||
{
|
||||
FlagGadget flagGadget = (FlagGadget) gadget;
|
||||
|
||||
if (type.equals(flagGadget.getFlagType()))
|
||||
{
|
||||
return flagGadget;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public BalloonGadget getBalloonGadget(BalloonType balloonType)
|
||||
{
|
||||
for (Gadget gadget : getGadgets(GadgetType.BALLOON))
|
||||
|
@ -9,19 +9,19 @@ import org.bukkit.entity.Player;
|
||||
import mineplex.core.command.CommandBase;
|
||||
import mineplex.core.common.Rank;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.candycane.ArrowTrailCandyCane;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.frostlord.ArrowTrailFrostLord;
|
||||
import mineplex.core.gadget.gadgets.death.candycane.DeathCandyCane;
|
||||
import mineplex.core.gadget.gadgets.death.frostlord.DeathFrostLord;
|
||||
import mineplex.core.gadget.gadgets.doublejump.candycane.DoubleJumpCandyCane;
|
||||
import mineplex.core.gadget.gadgets.doublejump.frostlord.DoubleJumpFrostLord;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailFrostLord;
|
||||
import mineplex.core.gadget.gadgets.death.DeathCandyCane;
|
||||
import mineplex.core.gadget.gadgets.death.DeathFrostLord;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpFrostLord;
|
||||
import mineplex.core.gadget.gadgets.hat.HatType;
|
||||
import mineplex.core.gadget.gadgets.item.ItemCoal;
|
||||
import mineplex.core.gadget.gadgets.item.ItemFreezeCannon;
|
||||
import mineplex.core.gadget.gadgets.item.ItemPartyPopper;
|
||||
import mineplex.core.gadget.gadgets.item.ItemSnowball;
|
||||
import mineplex.core.gadget.gadgets.morph.MorphSnowman;
|
||||
import mineplex.core.gadget.gadgets.particle.frostlord.ParticleFrostLord;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleFrostLord;
|
||||
import mineplex.core.gadget.types.Gadget;
|
||||
import mineplex.core.mount.Mount;
|
||||
|
||||
|
@ -41,13 +41,30 @@ public class UnlockCosmeticsCommand extends CommandBase<GadgetManager>
|
||||
{
|
||||
addCosmetics(null, caller);
|
||||
}
|
||||
else if (args.length == 1)
|
||||
else if (args.length >= 1)
|
||||
{
|
||||
Player player = Bukkit.getPlayer(args[0]);
|
||||
if (player != null)
|
||||
if (args[0].equalsIgnoreCase("all"))
|
||||
{
|
||||
addCosmetics(null, player);
|
||||
UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Added all the cosmetics to " + F.name(player.getName()) + "!"));
|
||||
for (Player player : UtilServer.getPlayers())
|
||||
{
|
||||
if (player != null)
|
||||
{
|
||||
addCosmetics(null, player);
|
||||
UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Added all the cosmetics to " + F.name(player.getName()) + "!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < args.length; ++i)
|
||||
{
|
||||
Player player = Bukkit.getPlayer(args[i]);
|
||||
if (player != null)
|
||||
{
|
||||
addCosmetics(null, player);
|
||||
UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Added all the cosmetics to " + F.name(player.getName()) + "!"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.vampire;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.candycane;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.party;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.cupidslove;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.emerald;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import mineplex.core.common.util.*;
|
||||
import org.bukkit.Location;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.wisdom;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.freedom;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import java.awt.Color;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.frostlord;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.halloween;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.HashMap;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.music;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
@ -0,0 +1,77 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilAlg;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.ArrowEffectGadget;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
/**
|
||||
* Trails a red and white double helix behind the arrow.
|
||||
*/
|
||||
public class ArrowTrailRedWhite extends ArrowEffectGadget
|
||||
{
|
||||
public ArrowTrailRedWhite(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Red & White Arrows",
|
||||
UtilText.splitLineToArray(C.cRed + "Killing you nicely.", LineFormat.LORE),
|
||||
-8, Material.WOOL, (byte)0);
|
||||
|
||||
setDisplayItem(CountryFlag.CANADA.getBanner());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doTrail(Arrow arrow)
|
||||
{
|
||||
Vector v = arrow.getVelocity();
|
||||
Vector up = UtilAlg.getUp(v);
|
||||
Vector left = UtilAlg.getLeft(v);
|
||||
|
||||
Location loc = arrow.getLocation();
|
||||
|
||||
double amount = 2;
|
||||
double ticks = 15;
|
||||
|
||||
for(int i = 0; i < amount; i++)
|
||||
{
|
||||
double rad = Math.PI*2.0;
|
||||
rad += i/amount * rad;
|
||||
rad += Math.PI*2*(arrow.getTicksLived()%ticks)/ticks;
|
||||
double l = -Math.sin(rad);
|
||||
double u = Math.cos(rad);
|
||||
|
||||
Vector vel = v.clone().add(up.clone().multiply(u)).add(left.clone().multiply(l));
|
||||
vel.multiply(0.4);
|
||||
|
||||
if (i == 0)
|
||||
{
|
||||
for(int j = 0; j < 3; ++j)
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(Color.RED, UtilParticle.ParticleType.RED_DUST, loc.clone().add(vel), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for(int j = 0; j < 3; ++j)
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(Color.WHITE, UtilParticle.ParticleType.RED_DUST, loc.clone().add(vel), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doHitEffect(Arrow arrow)
|
||||
{
|
||||
UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.EXPLODE, arrow.getLocation(), 0, 0, 0, 0, 3, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.shadow;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.spring;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.howlingwinds;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.arrowtrail.titan;
|
||||
package mineplex.core.gadget.gadgets.arrowtrail;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Arrow;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.vampire;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.candycane;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.cupidslove;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.emerald;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.wisdom;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.freedom;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Location;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.frostlord;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -0,0 +1,45 @@
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import mineplex.core.blood.BloodEvent;
|
||||
import mineplex.core.common.shape.ShapeWings;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.DeathEffectGadget;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
/**
|
||||
* Displays a giant maple leaf at the point of death.
|
||||
*/
|
||||
public class DeathMapleLeaf extends DeathEffectGadget
|
||||
{
|
||||
/** height off the ground of the leaf */
|
||||
private static final double HEIGHT = 3;
|
||||
|
||||
private final ShapeWings _leafOuter = new ShapeWings(UtilParticle.ParticleType.RED_DUST.particleName, new Vector(1.0, 1.0, 1.0), 1, 0, false, 0, ShapeWings.MAPLE_LEAF);
|
||||
private final ShapeWings _leafInner = new ShapeWings(UtilParticle.ParticleType.RED_DUST.particleName, new Vector(0.7, 0, 0), 1, 0, false, 0, ShapeWings.MAPLE_LEAF);
|
||||
|
||||
public DeathMapleLeaf(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Fallen Maple Leaf",
|
||||
UtilText.splitLineToArray(C.cGray + "When you die in " + C.cRed + "Canada" + C.cGray + " you die in real life.", LineFormat.LORE),
|
||||
-8, Material.WOOL, (byte) 0);
|
||||
|
||||
setDisplayItem(CountryFlag.CANADA.getBanner());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBlood(Player player, BloodEvent event)
|
||||
{
|
||||
event.setCancelled(true);
|
||||
Location loc = player.getLocation().add(0, HEIGHT, 0);
|
||||
_leafOuter.display(loc);
|
||||
_leafInner.display(loc);
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.music;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.party;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.christmas;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.shadow;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.spring;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.howlingwinds;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.death.titan;
|
||||
package mineplex.core.gadget.gadgets.death;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.vampire;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.candycane;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
@ -30,7 +30,7 @@ public class DoubleJumpCandyCane extends DoubleJumpEffectGadget
|
||||
Location loc = player.getLocation();
|
||||
UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 15), loc, 0, 0, 0, 0.15f, 100, ViewDist.NORMAL);
|
||||
UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 1), loc, 0, 0, 0, 0.15f, 100, ViewDist.NORMAL);
|
||||
UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 2), loc, 0, 0, 0, 0.15f, 100, ViewDist.NORMAL);
|
||||
UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 15), loc, 0, 0, 0, 0.15f, 100, ViewDist.NORMAL);
|
||||
}
|
||||
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.cupidslove;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.emerald;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.wisdom;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.party;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.freedom;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
@ -18,7 +18,7 @@ public class DoubleJumpFreedom extends DoubleJumpEffectGadget
|
||||
{
|
||||
super(manager, "Leap of Freedom", UtilText.splitLineToArray(UtilText.colorWords("FREEEEEEEEEEEDOM!",
|
||||
ChatColor.RED, ChatColor.WHITE, ChatColor.BLUE), LineFormat.LORE), -8, Material.WOOL,
|
||||
(byte) 14);
|
||||
(byte) 0);
|
||||
setDisplayItem(CountryFlag.USA.getBanner());
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.frostlord;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.halloween;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.HashMap;
|
@ -0,0 +1,110 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.DoubleJumpEffectGadget;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
public class DoubleJumpMaple extends DoubleJumpEffectGadget
|
||||
{
|
||||
/**
|
||||
* Amount of particles played per tick as a player flies through the air.
|
||||
*/
|
||||
private static final int PARTICLES = 50;
|
||||
|
||||
/**
|
||||
* Vertical offset of the animation's center from the player's location.
|
||||
*/
|
||||
private static final float Y_OFFSET = 0.95f;
|
||||
|
||||
/**
|
||||
* Divisor of the gaussian distribution of particles as the player flies through the air.
|
||||
*/
|
||||
private static final int DISTRIBUTION = 2;
|
||||
|
||||
/**
|
||||
* Particle ring count when a player launches from the ground.
|
||||
*/
|
||||
private static final int LAUNCH_RINGS = 6;
|
||||
|
||||
/**
|
||||
* The distance between launch rings.
|
||||
*/
|
||||
private static final float RING_SPACING = 0.4f;
|
||||
|
||||
/**
|
||||
* Particles played per 1 unit radius.
|
||||
*/
|
||||
private static final int RING_DENSITY = 8;
|
||||
|
||||
private HashMap<Player, Long> _playerMap = new HashMap<>();
|
||||
|
||||
public DoubleJumpMaple(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Maple Leap",
|
||||
UtilText.splitLineToArray(C.cGray + "Jump higher than the maple trees!", LineFormat.LORE),
|
||||
-8, Material.WOOL, (byte)0);
|
||||
setDisplayItem(CountryFlag.CANADA.getBanner());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void doEffect(Player player)
|
||||
{
|
||||
_playerMap.put(player, System.currentTimeMillis() + 1000);
|
||||
|
||||
float limit = (LAUNCH_RINGS * RING_SPACING) + RING_SPACING;
|
||||
|
||||
for (float r = RING_SPACING; r < limit; r++)
|
||||
{
|
||||
double[][] points = UtilMath.normalCircle(player.getLocation(), player.getVelocity(), r, Math.round(RING_DENSITY * r));
|
||||
|
||||
for (int i = 0; i < points.length; i++)
|
||||
{
|
||||
UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.EXPLODE, new Location(player.getWorld(), points[i][0], points[i][1], points[i][2]),
|
||||
null, 0, 1, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onUpdate(UpdateEvent event)
|
||||
{
|
||||
if(event.getType() != UpdateType.FASTEST)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for(Iterator<Map.Entry<Player, Long>> it = _playerMap.entrySet().iterator(); it.hasNext();)
|
||||
{
|
||||
Map.Entry<Player, Long> e = it.next();
|
||||
|
||||
if(e.getValue() <= System.currentTimeMillis())
|
||||
{
|
||||
it.remove();
|
||||
continue;
|
||||
}
|
||||
|
||||
Location loc = e.getKey().getLocation().add(0, Y_OFFSET, 0);
|
||||
|
||||
for (int i = 0; i < PARTICLES; ++i)
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(java.awt.Color.RED, UtilParticle.ParticleType.RED_DUST,
|
||||
UtilMath.gauss(loc, DISTRIBUTION, DISTRIBUTION, DISTRIBUTION), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.music;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.shadow;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.spring;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
@ -38,7 +38,7 @@ public class DoubleJumpSpring extends DoubleJumpEffectGadget
|
||||
{
|
||||
for (int i = 50; i < 60; i++)
|
||||
{
|
||||
Item sunflower = player.getWorld().dropItem(player.getLocation().add(0.5, 1.5, 0.5), ItemStackFactory.Instance.CreateStack(Material.DOUBLE_PLANT, (byte) 0, 1, " " + i));
|
||||
Item sunflower = player.getWorld().dropItem(player.getLocation().add(0.0, 0.2, 0.0), ItemStackFactory.Instance.CreateStack(Material.DOUBLE_PLANT, (byte) 0, 1, " " + i));
|
||||
_items.add(sunflower);
|
||||
|
||||
Vector vel = new Vector(Math.sin(i * 9/5d), 0, Math.cos(i * 9/5d));
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.howlingwinds;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.doublejump.titan;
|
||||
package mineplex.core.gadget.gadgets.doublejump;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -0,0 +1,33 @@
|
||||
package mineplex.core.gadget.gadgets.flag;
|
||||
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
|
||||
/**
|
||||
* Cosmetic flags representing countries.
|
||||
*/
|
||||
public enum FlagType
|
||||
{
|
||||
UNITED_STATES(CountryFlag.USA, -8),
|
||||
CANADA(CountryFlag.CANADA, -8),
|
||||
|
||||
;
|
||||
|
||||
private final CountryFlag _flag;
|
||||
private final int _cost;
|
||||
|
||||
FlagType(CountryFlag flag, int cost)
|
||||
{
|
||||
_flag = flag;
|
||||
_cost = cost;
|
||||
}
|
||||
|
||||
public CountryFlag getFlag()
|
||||
{
|
||||
return _flag;
|
||||
}
|
||||
|
||||
public int getCost()
|
||||
{
|
||||
return _cost;
|
||||
}
|
||||
}
|
@ -22,7 +22,11 @@ public enum HatType
|
||||
SNOWMAN("Snowman Head", UtilText.splitLineToArray(C.cGray + "Do you want to be a snowman?", LineFormat.LORE), -2, SkinData.SNOWMAN),
|
||||
TEDDY_BEAR("Teddy Bear", UtilText.splitLineToArray(C.cGray + "Aww, it's a cute teddy bear! What shall I name him?", LineFormat.LORE), -6, SkinData.TEDDY_BEAR),
|
||||
UNCLE_SAM("Uncle Sam Hat", UtilText.splitLineToArray(UtilText.colorWords("Uncle Sam has a big hat but now you can too.", ChatColor.RED, ChatColor.WHITE, ChatColor.BLUE), LineFormat.LORE), -8, SkinData.UNCLE_SAM),
|
||||
PUMPKIN("Pumpkin Hat", UtilText.splitLineToArray(C.cGray + "Pumpkin on the head, don't end up dead!", LineFormat.LORE), -9, Material.PUMPKIN);
|
||||
PUMPKIN("Pumpkin Hat", UtilText.splitLineToArray(C.cGray + "Pumpkin on the head, don't end up dead!", LineFormat.LORE), -9, Material.PUMPKIN),
|
||||
CANADA("Warm Canadian Hat", UtilText.splitLineToArray(C.cGray + "Keep your ears nice and warm while up north.", LineFormat.LORE), -8, SkinData.CANADA_HAT),
|
||||
AMERICA("Patriotic American Hat", UtilText.splitLineToArray(C.cGray + "Careful not to get a big head.", LineFormat.LORE), -8, SkinData.AMERICA_HAT),
|
||||
|
||||
;
|
||||
|
||||
private final String _name;
|
||||
private final String[] _lore;
|
||||
|
@ -0,0 +1,263 @@
|
||||
package mineplex.core.gadget.gadgets.morph;
|
||||
|
||||
import com.mojang.authlib.GameProfile;
|
||||
import mineplex.core.blockrestore.BlockRestore;
|
||||
import mineplex.core.common.skin.SkinData;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.F;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.disguise.disguises.DisguisePlayer;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.morph.managers.UtilMorph;
|
||||
import mineplex.core.gadget.types.MorphGadget;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import mineplex.core.utils.UtilGameProfile;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.block.Banner;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
|
||||
import java.time.Month;
|
||||
import java.time.YearMonth;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
/**
|
||||
* Freedom fighter morph, capable of planting flags by crouching.
|
||||
*/
|
||||
public class MorphFreedomFighter extends MorphGadget
|
||||
{
|
||||
/** How long it takes to plant a flag */
|
||||
private static final long FLAG_DELAY = 3500;
|
||||
|
||||
/** How long between flag plantings */
|
||||
private static final long FLAG_COOLDOWN = 25000;
|
||||
|
||||
/** Recharge key for planting flags */
|
||||
private static final String RECHARGE_KEY = "Plant Flag";
|
||||
|
||||
/** Design for beacon base */
|
||||
private static final int[][] BEACON_BASE = {
|
||||
{ 0, -2, 0}, {1, -2, 0}, {0, -2, 1}, {1, -2, 1},
|
||||
{-1, -2, 0}, {0, -2, -1}, {-1,-2,-1}, {0, -2, 1},
|
||||
{-1, -2, 1}, {1, -2, -1}
|
||||
};
|
||||
|
||||
/** Active timers for players planting flags */
|
||||
private final Map<UUID, Long> _flagTimers = new HashMap<>();
|
||||
|
||||
/** Active timers for players that have planted flags */
|
||||
private final Map<UUID, Long> _flagCooldowns = new HashMap<>();
|
||||
|
||||
public MorphFreedomFighter(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Freedom Fighter", UtilText.splitLinesToArray(new String[] {
|
||||
C.cGray + "Fight for your freedom from tyranny and oppressors!",
|
||||
"",
|
||||
C.cGreen + "Hold sneak" + C.cWhite + " to plant a flag of freedom!",
|
||||
}, LineFormat.LORE), -14, Material.CHAINMAIL_CHESTPLATE, (byte) 0, YearMonth.of(2017, Month.JULY));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the player's skin.
|
||||
*/
|
||||
@Override
|
||||
public void enableCustom(Player player, boolean message)
|
||||
{
|
||||
applyArmor(player, message);
|
||||
|
||||
GameProfile profile = UtilGameProfile.getGameProfile(player);
|
||||
profile.getProperties().clear();
|
||||
profile.getProperties().put("textures", SkinData.REVOLUTIONARY.getProperty());
|
||||
|
||||
DisguisePlayer disguisePlayer = new DisguisePlayer(player, profile);
|
||||
disguisePlayer.showInTabList(true, 0);
|
||||
UtilMorph.disguise(player, disguisePlayer, Manager);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Restores the player's skin
|
||||
*/
|
||||
@Override
|
||||
public void disableCustom(Player player, boolean message)
|
||||
{
|
||||
removeArmor(player);
|
||||
UtilMorph.undisguise(player, Manager.getDisguiseManager());
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onUpdate(UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FASTEST)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// Clear cooldown timers
|
||||
if (event.getType() == UpdateType.SEC)
|
||||
{
|
||||
Iterator<Map.Entry<UUID, Long>> itr = _flagCooldowns.entrySet().iterator();
|
||||
|
||||
while (itr.hasNext())
|
||||
{
|
||||
Map.Entry<UUID, Long> entry = itr.next();
|
||||
|
||||
if (entry.getValue() + FLAG_COOLDOWN < System.currentTimeMillis())
|
||||
{
|
||||
itr.remove();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// For all active cosmetics
|
||||
for (Player player : getActive())
|
||||
{
|
||||
UUID uuid = player.getUniqueId();
|
||||
|
||||
// If the player is attempting to place a flag
|
||||
if (_flagTimers.containsKey(uuid) && !_flagCooldowns.containsKey(uuid))
|
||||
{
|
||||
// Mark them as no longer attempting to place if not sneaking
|
||||
if (!player.isSneaking())
|
||||
{
|
||||
_flagTimers.remove(uuid);
|
||||
continue;
|
||||
}
|
||||
|
||||
// If the players has waiting long enough to place the flag
|
||||
if (_flagTimers.get(uuid) + FLAG_DELAY < System.currentTimeMillis())
|
||||
{
|
||||
boolean flag = false;
|
||||
Location location = player.getLocation().subtract(0, 0.5, 0);
|
||||
|
||||
// Make sure the ground is flat enough to place the flag
|
||||
for (int i = 0; i < BEACON_BASE.length; ++i)
|
||||
{
|
||||
Block b = location.clone().add(BEACON_BASE[i][0], 0, BEACON_BASE[i][2]).getBlock();
|
||||
|
||||
if (b.isEmpty())
|
||||
{
|
||||
flag = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (flag)
|
||||
{
|
||||
_flagTimers.remove(uuid);
|
||||
player.sendMessage(F.main("Morphs", C.cRed + "You must plant your flag on flatter ground."));
|
||||
}
|
||||
else
|
||||
{
|
||||
// handle placing the flag
|
||||
if (Recharge.Instance.use(player, RECHARGE_KEY, FLAG_COOLDOWN, true, false))
|
||||
{
|
||||
_flagTimers.remove(uuid);
|
||||
_flagCooldowns.put(uuid, System.currentTimeMillis());
|
||||
buildStructure(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Play particles leading up to placing the flag
|
||||
int particleCount = (int) ((System.currentTimeMillis() - _flagTimers.get(uuid)) / 40);
|
||||
UtilParticle.playParticleFor(player, UtilParticle.ParticleType.FIREWORKS_SPARK,
|
||||
UtilMath.gauss(player.getLocation().add(0, 1, 0), 2, 6, 2), null, 0, particleCount, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
else // if the player is not attempting to or has already placed a flag
|
||||
{
|
||||
if (player.isSneaking())
|
||||
{
|
||||
if (_flagCooldowns.containsKey(uuid))
|
||||
{
|
||||
Recharge.Instance.usable(player, RECHARGE_KEY, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
_flagTimers.put(uuid, System.currentTimeMillis());
|
||||
_flagCooldowns.remove(uuid);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds the structure and beacon by the player.
|
||||
*/
|
||||
private void buildStructure(Player player)
|
||||
{
|
||||
World world = player.getWorld();
|
||||
BlockRestore restore = Manager.getBlockRestore();
|
||||
int r = ThreadLocalRandom.current().nextInt(3);
|
||||
byte data = r == 0 ? (byte) 14 : r == 1 ? (byte) 0 : 11;
|
||||
Location point = player.getLocation().subtract(0, 0.5, 0);
|
||||
|
||||
while (point.getY() > 1 && !(UtilBlock.fullSolid(point.getBlock()) || UtilBlock.airFoliage(point.getBlock())))
|
||||
{
|
||||
point.setY(point.getY() - 1);
|
||||
}
|
||||
|
||||
Block glass = point.getBlock().getRelative(BlockFace.UP);
|
||||
restore.add(glass, Material.STAINED_GLASS.getId(), data, FLAG_COOLDOWN);
|
||||
glass = glass.getRelative(BlockFace.UP);
|
||||
restore.add(glass, Material.STAINED_GLASS.getId(), data, FLAG_COOLDOWN);
|
||||
|
||||
BlockFace[] faces = { BlockFace.NORTH, BlockFace.SOUTH, BlockFace.WEST, BlockFace.EAST };
|
||||
Block[] blocks = { glass.getRelative(BlockFace.NORTH), glass.getRelative(BlockFace.SOUTH),
|
||||
glass.getRelative(BlockFace.WEST), glass.getRelative(BlockFace.EAST) };
|
||||
|
||||
restore.add(glass.getRelative(BlockFace.UP), Material.CARPET.getId(), data, FLAG_COOLDOWN - 50);
|
||||
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
restore.add(blocks[i], Material.WALL_BANNER.getId(), (byte) i, blocks[i].getTypeId(), blocks[i].getData(), FLAG_COOLDOWN - 100);
|
||||
}
|
||||
|
||||
for (int i = 0; i < 4; ++i)
|
||||
{
|
||||
Banner state = ((Banner) blocks[i].getState());
|
||||
org.bukkit.material.Banner stateData = (org.bukkit.material.Banner) state.getData();
|
||||
stateData.setFacingDirection(faces[i]);
|
||||
CountryFlag flag = i < 2 ? CountryFlag.USA : CountryFlag.CANADA;
|
||||
state.setBaseColor(flag.getBaseColor());
|
||||
state.setPatterns(flag.getPatterns());
|
||||
state.update();
|
||||
}
|
||||
|
||||
restore.add(point.getBlock(), Material.PISTON_BASE.getId(), (byte) 0, FLAG_COOLDOWN);
|
||||
|
||||
point.subtract(0, 1, 0);
|
||||
restore.add(point.getBlock(), Material.PISTON_BASE.getId(), (byte) 0, FLAG_COOLDOWN);
|
||||
|
||||
restore.add(point.getBlock().getRelative(BlockFace.DOWN), Material.BEACON.getId(), (byte) 0, FLAG_COOLDOWN);
|
||||
|
||||
for (int i = 0; i < BEACON_BASE.length; ++i)
|
||||
{
|
||||
restore.add(world.getBlockAt(point.clone().add(BEACON_BASE[i][0], BEACON_BASE[i][1], BEACON_BASE[i][2])),
|
||||
Material.IRON_BLOCK.getId(), (byte) 0, FLAG_COOLDOWN);
|
||||
}
|
||||
|
||||
UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.HUGE_EXPLOSION, player.getLocation(), null, 0, 1, UtilParticle.ViewDist.NORMAL);
|
||||
player.playSound(player.getLocation(), Sound.EXPLODE, 1.0f, 1.0f);
|
||||
player.teleport(player.getLocation().add(0, 2.5, 0));
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.vampire;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.candycane;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.UUID;
|
||||
@ -63,7 +63,7 @@ public class ParticleCandyCane extends ParticleGadget
|
||||
|
||||
UtilParticle.playParticleFor(player, UtilParticle.ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 15), loc, w, y, w, 0, a, UtilParticle.ViewDist.NORMAL);
|
||||
UtilParticle.playParticleFor(player, UtilParticle.ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 1), loc, w, y, w, 0, a, UtilParticle.ViewDist.NORMAL);
|
||||
UtilParticle.playParticleFor(player, UtilParticle.ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 2), loc, w, y, w, 0, a, UtilParticle.ViewDist.NORMAL);
|
||||
UtilParticle.playParticleFor(player, UtilParticle.ParticleType.ICON_CRACK.getParticle(Material.INK_SACK, 15), loc, w, y, w, 0, a, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
|
||||
@EventHandler
|
@ -1,5 +1,6 @@
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -27,7 +28,7 @@ public class ParticleCoalFumes extends ParticleGadget
|
||||
@Override
|
||||
public void playParticle(Player player, UpdateEvent event)
|
||||
{
|
||||
if(event.getType() != UpdateType.TICK) return;
|
||||
if(event.getType() != UpdateType.FASTER) return;
|
||||
|
||||
float xz = 1;
|
||||
int amount = 5;
|
||||
@ -39,6 +40,6 @@ public class ParticleCoalFumes extends ParticleGadget
|
||||
amount = 2;
|
||||
}
|
||||
|
||||
UtilParticle.playParticleFor(player, type, player.getLocation(), xz, 0, xz, 0, amount, ViewDist.NORMAL);
|
||||
UtilParticle.playParticleFor(player, type, UtilMath.gauss(player.getLocation(), 2, 6, 2), xz, 0, xz, 0, amount, ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.emerald;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.wisdom;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.shadow;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.frostlord;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
@ -1,5 +1,6 @@
|
||||
package mineplex.core.gadget.gadgets.particle.cupidslove;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -37,11 +38,11 @@ public class ParticleHeart extends ParticleGadget
|
||||
{
|
||||
if(getSet() == null || !getSet().isActive(player)) return;
|
||||
|
||||
UtilParticle.playParticleFor(player, ParticleType.HEART, player.getLocation().add(0, 1, 0), null, 0, 1, ViewDist.NORMAL);
|
||||
UtilParticle.playParticleFor(player, ParticleType.HEART, player.getLocation().add(0, 1.2, 0), null, 0, 1, ViewDist.NORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilParticle.playParticleFor(player, ParticleType.HEART, player.getLocation().add(0, 1, 0), 0.5f, 0.5f, 0.5f, 0, 1, ViewDist.NORMAL);
|
||||
UtilParticle.playParticleFor(player, ParticleType.HEART, UtilMath.gauss(player.getLocation(), 1, 3, 1).add(0, 1.2, 0), null, 0, 1, ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -17,12 +19,40 @@ import mineplex.core.inventory.data.Item;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
public class ParticleLegend extends ParticleGadget
|
||||
{
|
||||
private static final double PI = Math.PI;
|
||||
private static final int BASE_PILLARS = 9;
|
||||
private static final int PILLAR_VARIANCE = 8;
|
||||
private static final int MOVING_PARTICLES = 8;
|
||||
private static final double VERTICAL_SPEED = 0.1;
|
||||
private static final double HEIGHT_VARIANCE = 0.8;
|
||||
private static final double ROTATIONAL_SPEED = .03;
|
||||
private static final double RADIAL_VARIANCE = 0.09;
|
||||
private static final double BASE_RADIUS = 1.30;
|
||||
private static final double HEIGHT_MODIFIER_BASE = 0.1;
|
||||
private static final double HEIGHT_MODIFIER_MAX = 1.3;
|
||||
private static final double HEIGHT_MODIFIER_INTERVAL = 0.15;
|
||||
private static final Color[] SELECTABLE_COLORS = {
|
||||
new Color(60, 170, 25),
|
||||
new Color(33, 92, 13),
|
||||
new Color(0, 0, 0)
|
||||
};
|
||||
|
||||
private final int _pillars = pillars();
|
||||
private final Color[] _colors = colors();
|
||||
private final double[] _heights = heights();
|
||||
private final double[] _verticals = verticals();
|
||||
private final double[] _variance = variances();
|
||||
private final double[] _thetas = thetas();
|
||||
private final double[] _radii = radii();
|
||||
|
||||
public ParticleLegend(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Legendary Aura",
|
||||
UtilText.splitLineToArray(C.cGray + "This particle will be updated soon! Yay!", LineFormat.LORE),
|
||||
UtilText.splitLineToArray(C.cGray + "Legendary energy protects you.", LineFormat.LORE),
|
||||
-1,
|
||||
Material.ENDER_PORTAL_FRAME, (byte)0);
|
||||
}
|
||||
@ -31,11 +61,150 @@ public class ParticleLegend extends ParticleGadget
|
||||
public void playParticle(Player player, UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.TICK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
player.getWorld().playEffect(player.getLocation().add(0, 1, 0), Effect.ENDER_SIGNAL, 0);
|
||||
if (Manager.isMoving(player))
|
||||
{
|
||||
|
||||
for (int i = 0; i < MOVING_PARTICLES; i++)
|
||||
{
|
||||
if (_colors[i].getGreen() == 0)
|
||||
{
|
||||
UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.SMOKE,
|
||||
UtilMath.gauss(player.getLocation(), 8, 4, 8), null, 0, 1, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(_colors[i], UtilParticle.ParticleType.RED_DUST,
|
||||
UtilMath.gauss(player.getLocation(), 8, 4, 8), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (event.getTick() % (ROTATIONAL_SPEED * 100) == 0)
|
||||
{
|
||||
for (int i = 0; i < _pillars; i++)
|
||||
{
|
||||
_thetas[i] = rollover(_thetas[i], ROTATIONAL_SPEED);
|
||||
_heights[i] = rollover(_heights[i], _verticals[i]);
|
||||
|
||||
double x = (_radii[i] * Math.cos(_thetas[i])) + player.getLocation().getX();
|
||||
double z = (_radii[i] * Math.sin(_thetas[i])) + player.getLocation().getZ();
|
||||
double y = (Math.sin(_heights[i]) * _variance[i]) + player.getLocation().getY();
|
||||
|
||||
for (double h = HEIGHT_MODIFIER_BASE; h <= HEIGHT_MODIFIER_MAX; h+= HEIGHT_MODIFIER_INTERVAL)
|
||||
{
|
||||
if (_colors[i].getGreen() == 0)
|
||||
{
|
||||
UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.SMOKE,
|
||||
new Location(player.getWorld(), x, y + h, z), null, 0, 1, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(_colors[i], UtilParticle.ParticleType.RED_DUST,
|
||||
new Location(player.getWorld(), x, y + h, z), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private double[] heights()
|
||||
{
|
||||
double[] array = new double[_pillars];
|
||||
|
||||
for (int i = 0; i < _pillars; i++)
|
||||
{
|
||||
array[i] = 6.28 * Math.random();
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
private double[] variances()
|
||||
{
|
||||
double[] array = new double[_pillars];
|
||||
|
||||
for (int i = 0; i < _pillars; i++)
|
||||
{
|
||||
array[i] = Math.random() * HEIGHT_VARIANCE;
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
private double[] verticals()
|
||||
{
|
||||
double[] array = new double[_pillars];
|
||||
|
||||
for (int i = 0; i < _pillars; i++)
|
||||
{
|
||||
array[i] = Math.random() * VERTICAL_SPEED;
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
private double[] thetas()
|
||||
{
|
||||
double[] array = new double[_pillars];
|
||||
double theta = 0;
|
||||
double interval = (2 * PI) / _pillars;
|
||||
|
||||
for (int i = 0; i < _pillars; i++)
|
||||
{
|
||||
array[i] = theta;
|
||||
theta += interval;
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
private double[] radii()
|
||||
{
|
||||
double[] array = new double[_pillars];
|
||||
|
||||
for (int i = 0; i < _pillars; i++)
|
||||
{
|
||||
array[i] = BASE_RADIUS + (Math.random() * RADIAL_VARIANCE);
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
private Color[] colors()
|
||||
{
|
||||
Color[] array = new Color[_pillars];
|
||||
|
||||
for (int i = 0; i < _pillars; i++)
|
||||
{
|
||||
array[i] = SELECTABLE_COLORS[i % SELECTABLE_COLORS.length];
|
||||
}
|
||||
|
||||
return array;
|
||||
}
|
||||
|
||||
private int pillars()
|
||||
{
|
||||
return BASE_PILLARS + (int) ((Math.random() * PILLAR_VARIANCE) - (PILLAR_VARIANCE / 2));
|
||||
}
|
||||
|
||||
private double rollover(double value, double additive)
|
||||
{
|
||||
value += additive;
|
||||
|
||||
if (value >= 2 * PI)
|
||||
{
|
||||
value = value - (2 * PI);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void legendOwner(PlayerJoinEvent event)
|
||||
{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.music;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.party;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.howlingwinds;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package mineplex.core.gadget.gadgets.particle.titan;
|
||||
package mineplex.core.gadget.gadgets.particle;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
@ -0,0 +1,194 @@
|
||||
package mineplex.core.gadget.gadgets.particle.freedom;
|
||||
|
||||
import mineplex.core.arcadeevents.CoreGameStartEvent;
|
||||
import mineplex.core.arcadeevents.CoreGameStopEvent;
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilBlock;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilShapes;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.ParticleGadget;
|
||||
import mineplex.core.treasure.event.TreasureFinishEvent;
|
||||
import mineplex.core.treasure.event.TreasureStartEvent;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.block.BlockPhysicsEvent;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.HashMap;
|
||||
import java.util.HashSet;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* Places flowers around the player with poofs of red and white
|
||||
*/
|
||||
public class ParticleAuraNiceness extends ParticleGadget
|
||||
{
|
||||
/** Radius within which flowers not allowed near treasure chests */
|
||||
private static final int TREASURE_RADIUS = 4;
|
||||
|
||||
/** Horizontal offset for particle spawns */
|
||||
private static final double H_FIELD = 0.5;
|
||||
|
||||
/** Vertical offset for particle spawns */
|
||||
private static final double V_FIELD = 0.35;
|
||||
|
||||
/** How likely a flower is to be spawned (1/n) */
|
||||
private static final int ROSE_PROBABILITY = 40;
|
||||
|
||||
/** Radius in which flowers are spawned */
|
||||
private static final double ROSE_RADIUS = 2.5;
|
||||
|
||||
/** How many particles accompany each flower spawn */
|
||||
private static final int PARTICLE_COUNT = 20;
|
||||
|
||||
/** List of blocks that have flowers in them */
|
||||
private final Set<Block> _blocks = new HashSet<>();
|
||||
|
||||
/** Milliseconds for which flowers persist */
|
||||
private final long DURATION = 5000;
|
||||
|
||||
/** Locations at which treasure is currently being opened */
|
||||
private final Map<UUID, Location> _openingTreasure = new HashMap<>();
|
||||
|
||||
/** Whether flowers can be spawned in addition to particles */
|
||||
private boolean _enabled = true;
|
||||
|
||||
public ParticleAuraNiceness(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Aura of Niceness",
|
||||
UtilText.splitLineToArray(C.cGray + "Canadians are always nice online.", LineFormat.LORE), -8, Material.WOOL,
|
||||
(byte) 0);
|
||||
|
||||
setDisplayItem(CountryFlag.CANADA.getBanner());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playParticle(Player player, UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FASTER)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (Location location : _openingTreasure.values())
|
||||
{
|
||||
if (location.toVector().isInSphere(player.getLocation().toVector(), TREASURE_RADIUS))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
UtilShapes.getCircle(player.getLocation().subtract(0, 0.5, 0), false, ROSE_RADIUS).stream().map(Location::getBlock)
|
||||
.collect(Collectors.toSet()).forEach(block ->
|
||||
{
|
||||
if (ThreadLocalRandom.current().nextInt(ROSE_PROBABILITY) == 0)
|
||||
{
|
||||
Block b = block.getRelative(BlockFace.UP);
|
||||
|
||||
if (b.isEmpty() && UtilBlock.fullSolid(block) && !UtilBlock.bottomSlab(block))
|
||||
{
|
||||
Location loc = b.getLocation().add(H_FIELD, V_FIELD, H_FIELD);
|
||||
|
||||
if (_enabled)
|
||||
{
|
||||
byte data = ThreadLocalRandom.current().nextInt(2) == 0 ? (byte) 4 : 6;
|
||||
|
||||
_blocks.add(b);
|
||||
Manager.getBlockRestore().add(b, Material.RED_ROSE.getId(), data, DURATION);
|
||||
}
|
||||
|
||||
for (int i = 0; i < PARTICLE_COUNT; ++i)
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(Color.RED, UtilParticle.ParticleType.RED_DUST, UtilMath.gauss(loc, 4, 4, 4), 0, UtilParticle.ViewDist.NORMAL);
|
||||
UtilParticle.playColoredParticleToAll(Color.WHITE, UtilParticle.ParticleType.RED_DUST, UtilMath.gauss(loc, 4, 4, 4), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
for(Iterator<Block> it = _blocks.iterator(); it.hasNext();)
|
||||
{
|
||||
Block b = it.next();
|
||||
|
||||
if (b.getType() != Material.RED_ROSE)
|
||||
{
|
||||
it.remove();
|
||||
Location loc = b.getLocation().add(H_FIELD, V_FIELD, H_FIELD);
|
||||
for (int i = 0; i < PARTICLE_COUNT / 2; ++i)
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(Color.RED, UtilParticle.ParticleType.RED_DUST, UtilMath.gauss(loc, 6, 6, 6), 0, UtilParticle.ViewDist.NORMAL);
|
||||
UtilParticle.playColoredParticleToAll(Color.WHITE, UtilParticle.ParticleType.RED_DUST, UtilMath.gauss(loc, 6, 6, 6), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop flowers from popping off of blocks
|
||||
*/
|
||||
@EventHandler
|
||||
public void onBlockFade(BlockPhysicsEvent event)
|
||||
{
|
||||
if (_blocks.contains(event.getBlock()))
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable flowers in the area around treasure being opened.
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.LOW)
|
||||
public void disableOnTreasureStart(TreasureStartEvent event)
|
||||
{
|
||||
_openingTreasure.put(event.getPlayer().getUniqueId(), event.getPlayer().getLocation());
|
||||
Manager.getBlockRestore().restoreBlockAround(Material.CARPET, event.getPlayer().getLocation(), TREASURE_RADIUS);
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable flowers in the area around treasure no longer being opened.
|
||||
*/
|
||||
@EventHandler(priority = EventPriority.HIGH)
|
||||
public void enableOnTreasureFinish(TreasureFinishEvent event)
|
||||
{
|
||||
if (_openingTreasure.containsKey(event.getPlayer().getUniqueId()))
|
||||
{
|
||||
_openingTreasure.remove(event.getPlayer().getUniqueId());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Disable flowers on game start
|
||||
*/
|
||||
@EventHandler
|
||||
public void onGameStart(CoreGameStartEvent event)
|
||||
{
|
||||
_enabled = false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Enable flowers on game end
|
||||
*/
|
||||
@EventHandler
|
||||
public void onGameEnd(CoreGameStopEvent event)
|
||||
{
|
||||
_enabled = true;
|
||||
}
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
package mineplex.core.gadget.gadgets.particle.freedom;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.ParticleGadget;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.BannerMeta;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
/**
|
||||
* Leaves a trail behind the player with the colors of the Canadian flag.
|
||||
*/
|
||||
public class ParticleCanadian extends ParticleGadget
|
||||
{
|
||||
/** # of lines of particles */
|
||||
private static final int STRAND_COUNT = 9;
|
||||
|
||||
/** How far apart each line of particles is */
|
||||
private static final double STRAND_SPACING = 0.124;
|
||||
|
||||
/** How far off the floor the particles begin */
|
||||
private static final double DISTANCE_FROM_FLOOR = 0.43;
|
||||
|
||||
public ParticleCanadian(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Canadian Trail",
|
||||
UtilText.splitLineToArray(C.cGray + "Lead the way to freedom!", LineFormat.LORE),
|
||||
-8, Material.WOOL, (byte) 0);
|
||||
|
||||
setDisplayItem(CountryFlag.CANADA.getBanner());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playParticle(Player player, UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.TICK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Location center = player.getLocation().subtract(player.getLocation().getDirection().multiply(0.4))
|
||||
.subtract(0, 0.1, 0).add(0, DISTANCE_FROM_FLOOR, 0);
|
||||
|
||||
if (Manager.isMoving(player))
|
||||
{
|
||||
for (int i = 0; i < STRAND_COUNT; i++)
|
||||
{
|
||||
if (i < 3 || i > 5)
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(Color.RED, UtilParticle.ParticleType.RED_DUST,
|
||||
center.add(0, STRAND_SPACING, 0), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
else
|
||||
{
|
||||
UtilParticle.playColoredParticleToAll(Color.WHITE, UtilParticle.ParticleType.RED_DUST,
|
||||
center.add(0, STRAND_SPACING, 0), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,59 @@
|
||||
package mineplex.core.gadget.gadgets.particle.freedom;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilMath;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.ParticleGadget;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
/**
|
||||
* Small fireworks which explode around the player
|
||||
*/
|
||||
public class ParticleFreedomFireworks extends ParticleGadget
|
||||
{
|
||||
/** Block types to source for particles */
|
||||
private static final Material[] BLOCKTYPES = {
|
||||
Material.REDSTONE_BLOCK,
|
||||
Material.LAPIS_BLOCK,
|
||||
Material.QUARTZ_BLOCK
|
||||
};
|
||||
|
||||
/** Amount of particles for each firework */
|
||||
private static final int PARTICLE_COUNT = 20;
|
||||
|
||||
public ParticleFreedomFireworks(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Freedom Fireworks",
|
||||
UtilText.splitLineToArray(C.cGray + "Keep your patriotism close.", LineFormat.LORE),
|
||||
-8, Material.WOOL, (byte) 0);
|
||||
|
||||
setDisplayItem(CountryFlag.USA.getBanner());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playParticle(Player player, UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.FAST)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
String particle = UtilParticle.ParticleType.BLOCK_CRACK.getParticle(BLOCKTYPES[ThreadLocalRandom.current().nextInt(0, BLOCKTYPES.length)], 0);
|
||||
Location location = UtilMath.gauss(player.getEyeLocation(), 1, 1, 1);
|
||||
|
||||
for (int i = 0; i < PARTICLE_COUNT; ++i)
|
||||
{
|
||||
UtilParticle.PlayParticleToAll(particle, location, null, 3.0f, 1, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,81 @@
|
||||
package mineplex.core.gadget.gadgets.particle.freedom;
|
||||
|
||||
import mineplex.core.common.util.C;
|
||||
import mineplex.core.common.util.LineFormat;
|
||||
import mineplex.core.common.util.UtilParticle;
|
||||
import mineplex.core.common.util.UtilServer;
|
||||
import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.common.util.banner.CountryFlag;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.types.ParticleGadget;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
import mineplex.core.updater.event.UpdateEvent;
|
||||
import net.minecraft.server.v1_8_R3.MinecraftServer;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.awt.*;
|
||||
|
||||
|
||||
/**
|
||||
* @author J Teissler
|
||||
* @date 6/26/17
|
||||
*/
|
||||
public class ParticleStarSpangled extends ParticleGadget
|
||||
{
|
||||
private static final int STRAND_COUNT = 9;
|
||||
private static final double STRAND_SPACING = 0.124;
|
||||
private static final double DISTANCE_FROM_FLOOR = 0.43;
|
||||
|
||||
private static final Color BLUE = new Color(29, 26, 120);
|
||||
|
||||
public ParticleStarSpangled(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Star Spangled Stripe",
|
||||
UtilText.splitLineToArray(C.cGray + "Blaze a trail of freedom!", LineFormat.LORE),
|
||||
-8, Material.WOOL, (byte) 0);
|
||||
setDisplayItem(CountryFlag.USA.getBanner());
|
||||
}
|
||||
|
||||
@Override
|
||||
public void playParticle(Player player, UpdateEvent event)
|
||||
{
|
||||
if (event.getType() != UpdateType.TICK)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
Location center = player.getLocation().subtract(player.getLocation().getDirection().multiply(0.4))
|
||||
.subtract(0, 0.1, 0).add(0, DISTANCE_FROM_FLOOR, 0);
|
||||
|
||||
if (Manager.isMoving(player))
|
||||
{
|
||||
for (int i = 0; i < STRAND_COUNT; i++)
|
||||
{
|
||||
if (i == 3 || i == 7)
|
||||
{
|
||||
if (player.getTicksLived() % 3 == 0)
|
||||
{
|
||||
UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.FIREWORKS_SPARK,
|
||||
center.add(0, STRAND_SPACING, 0), 0f, 0f, 0f, 0f, 0, UtilParticle.ViewDist.NORMAL);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else if (i == 5)
|
||||
{
|
||||
if (player.getTicksLived() + 1 % 3 == 0)
|
||||
{
|
||||
UtilParticle.PlayParticleToAll(UtilParticle.ParticleType.FIREWORKS_SPARK,
|
||||
center.add(0, STRAND_SPACING, 0), 0f, 0f, 0f, 0f, 0, UtilParticle.ViewDist.NORMAL);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
UtilParticle.playColoredParticleToAll(BLUE, UtilParticle.ParticleType.RED_DUST,
|
||||
center.add(0, STRAND_SPACING, 0), 0, UtilParticle.ViewDist.NORMAL);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -35,10 +35,12 @@ public class BlowAKissTaunt extends TauntGadget
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(Player player)
|
||||
public boolean onStart(Player player)
|
||||
{
|
||||
if (!Recharge.Instance.use(player, getName(), COOLDOWN, true, false, "Cosmetics"))
|
||||
return;
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
HashSet<Material> ignore = new HashSet<>();
|
||||
ignore.add(Material.AIR);
|
||||
@ -46,6 +48,8 @@ public class BlowAKissTaunt extends TauntGadget
|
||||
|
||||
BlowAKissEffect blowAKissEffect = new BlowAKissEffect(player, loc, this);
|
||||
blowAKissEffect.start();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,6 +6,8 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
||||
import mineplex.core.disguise.disguises.DisguiseBase;
|
||||
import mineplex.core.game.GameDisplay;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.FireworkEffect;
|
||||
@ -28,9 +30,7 @@ import mineplex.core.common.util.UtilText;
|
||||
import mineplex.core.disguise.disguises.DisguiseSkeleton;
|
||||
import mineplex.core.events.EnableArcadeSpawnEvent;
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.morph.managers.UtilMorph;
|
||||
import mineplex.core.gadget.types.TauntGadget;
|
||||
import mineplex.core.game.GameDisplay;
|
||||
import mineplex.core.itemstack.ItemStackFactory;
|
||||
import mineplex.core.recharge.Recharge;
|
||||
import mineplex.core.updater.UpdateType;
|
||||
@ -41,7 +41,8 @@ public class EternalTaunt extends TauntGadget
|
||||
private static final int COOLDOWN = 30000;
|
||||
private static final int PVP_COOLDOWN = 10000;
|
||||
|
||||
private Map<UUID, List<Item>> _clocks = new HashMap<>();
|
||||
private final Map<UUID, List<Item>> _clocks = new HashMap<>();
|
||||
private final Map<UUID, DisguiseBase> _disguises = new HashMap<>();
|
||||
|
||||
public EternalTaunt(GadgetManager manager)
|
||||
{
|
||||
@ -50,33 +51,48 @@ public class EternalTaunt extends TauntGadget
|
||||
C.cWhite + "Use /taunt in game to show how long you've been waiting.",
|
||||
C.cRed + "Cannot be used while in PvP!"}, LineFormat.LORE),
|
||||
-15, Material.WATCH, (byte) 0);
|
||||
|
||||
setCanPlayWithPvp(false);
|
||||
setPvpCooldown(PVP_COOLDOWN);
|
||||
setShouldPlay(true);
|
||||
setEventType(UpdateType.FAST);
|
||||
addDisabledGames(GameDisplay.Smash, GameDisplay.SmashTeams, GameDisplay.SmashDomination);
|
||||
addDisabledGames(GameDisplay.Smash, GameDisplay.SmashTeams, GameDisplay.SmashDomination, GameDisplay.SmashTraining);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(Player player)
|
||||
public boolean onStart(Player player)
|
||||
{
|
||||
if (!Recharge.Instance.use(player, getName(), COOLDOWN, true, false, "Cosmetics"))
|
||||
return;
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
UtilFirework.playFirework(player.getLocation(), FireworkEffect.builder().with(FireworkEffect.Type.BALL_LARGE).withColor(Color.fromRGB(255, 175, 175)).withFade(Color.RED).build());
|
||||
|
||||
_clocks.put(player.getUniqueId(), new ArrayList<>());
|
||||
|
||||
Bukkit.broadcastMessage(F.main("Taunt", F.name(player.getName()) + " waited so long they turned to bones."));
|
||||
|
||||
DisguiseSkeleton disguiseSkeleton = new DisguiseSkeleton(player);
|
||||
UtilMorph.disguise(player, disguiseSkeleton, Manager);
|
||||
if (!Manager.getDisguiseManager().isDisguised(player))
|
||||
{
|
||||
DisguiseSkeleton disguiseSkeleton = new DisguiseSkeleton(player);
|
||||
disguiseSkeleton.setName(player.getName());
|
||||
disguiseSkeleton.setCustomNameVisible(true);
|
||||
disguiseSkeleton.showArmor();
|
||||
Manager.getDisguiseManager().disguise(disguiseSkeleton);
|
||||
_disguises.put(player.getUniqueId(), disguiseSkeleton);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onPlay(Player player)
|
||||
{
|
||||
if (!_clocks.containsKey(player.getUniqueId()))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
int i = getPlayerTicks(player);
|
||||
|
||||
@ -114,7 +130,11 @@ public class EternalTaunt extends TauntGadget
|
||||
@Override
|
||||
public void onFinish(Player player)
|
||||
{
|
||||
UtilMorph.undisguise(player, Manager.getDisguiseManager());
|
||||
if (_disguises.containsKey(player.getUniqueId()))
|
||||
{
|
||||
Manager.getDisguiseManager().undisguise(_disguises.remove(player.getUniqueId()));
|
||||
}
|
||||
|
||||
if (_clocks.containsKey(player.getUniqueId()))
|
||||
{
|
||||
_clocks.get(player.getUniqueId()).forEach(c -> c.remove());
|
||||
|
@ -36,10 +36,12 @@ public class RainbowTaunt extends TauntGadget
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onStart(Player player)
|
||||
public boolean onStart(Player player)
|
||||
{
|
||||
if (!Recharge.Instance.use(player, getName(), COOLDOWN, true, false, "Cosmetics"))
|
||||
return;
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Vector dir = player.getLocation().getDirection();
|
||||
Vector sideA = dir.clone().setX(-dir.getZ()).setZ(dir.getX());
|
||||
@ -51,6 +53,8 @@ public class RainbowTaunt extends TauntGadget
|
||||
RainbowTauntEffect rainbowTauntEffect = new RainbowTauntEffect(start, Manager.getPlugin());
|
||||
rainbowTauntEffect.setTargetLocation(new EffectLocation(end));
|
||||
rainbowTauntEffect.start();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -0,0 +1,22 @@
|
||||
package mineplex.core.gadget.set;
|
||||
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailRedWhite;
|
||||
import mineplex.core.gadget.gadgets.death.DeathMapleLeaf;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpMaple;
|
||||
import mineplex.core.gadget.gadgets.particle.freedom.ParticleCanadian;
|
||||
import mineplex.core.gadget.types.GadgetSet;
|
||||
|
||||
public class SetCanadian extends GadgetSet
|
||||
{
|
||||
|
||||
public SetCanadian(GadgetManager manager)
|
||||
{
|
||||
super(manager, "Canadian", "2x Holiday Points while active (Titles)",
|
||||
manager.getGadget(ArrowTrailRedWhite.class),
|
||||
manager.getGadget(DeathMapleLeaf.class),
|
||||
manager.getGadget(DoubleJumpMaple.class),
|
||||
manager.getGadget(ParticleCanadian.class));
|
||||
}
|
||||
|
||||
}
|
@ -1,10 +1,10 @@
|
||||
package mineplex.core.gadget.set;
|
||||
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.candycane.ArrowTrailCandyCane;
|
||||
import mineplex.core.gadget.gadgets.death.candycane.DeathCandyCane;
|
||||
import mineplex.core.gadget.gadgets.doublejump.candycane.DoubleJumpCandyCane;
|
||||
import mineplex.core.gadget.gadgets.particle.candycane.ParticleCandyCane;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCandyCane;
|
||||
import mineplex.core.gadget.gadgets.death.DeathCandyCane;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCandyCane;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleCandyCane;
|
||||
import mineplex.core.gadget.types.GadgetSet;
|
||||
|
||||
public class SetCandyCane extends GadgetSet
|
||||
|
@ -1,10 +1,10 @@
|
||||
package mineplex.core.gadget.set;
|
||||
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.cupidslove.ArrowTrailCupid;
|
||||
import mineplex.core.gadget.gadgets.death.cupidslove.DeathCupidsBrokenHeart;
|
||||
import mineplex.core.gadget.gadgets.doublejump.cupidslove.DoubleJumpCupidsWings;
|
||||
import mineplex.core.gadget.gadgets.particle.cupidslove.ParticleHeart;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailCupid;
|
||||
import mineplex.core.gadget.gadgets.death.DeathCupidsBrokenHeart;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpCupidsWings;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleHeart;
|
||||
import mineplex.core.gadget.types.GadgetSet;
|
||||
|
||||
public class SetCupidsLove extends GadgetSet
|
||||
|
@ -1,10 +1,10 @@
|
||||
package mineplex.core.gadget.set;
|
||||
|
||||
import mineplex.core.gadget.GadgetManager;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.emerald.ArrowTrailEmerald;
|
||||
import mineplex.core.gadget.gadgets.death.emerald.DeathEmerald;
|
||||
import mineplex.core.gadget.gadgets.doublejump.emerald.DoubleJumpEmerald;
|
||||
import mineplex.core.gadget.gadgets.particle.emerald.ParticleEmerald;
|
||||
import mineplex.core.gadget.gadgets.arrowtrail.ArrowTrailEmerald;
|
||||
import mineplex.core.gadget.gadgets.death.DeathEmerald;
|
||||
import mineplex.core.gadget.gadgets.doublejump.DoubleJumpEmerald;
|
||||
import mineplex.core.gadget.gadgets.particle.ParticleEmerald;
|
||||
import mineplex.core.gadget.types.GadgetSet;
|
||||
|
||||
public class SetEmerald extends GadgetSet
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user