diff --git a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java index 9b84839e4..a7ec13ab8 100644 --- a/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java +++ b/Plugins/Mineplex.Core.Common/src/mineplex/core/common/skin/SkinData.java @@ -78,6 +78,7 @@ 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 IVY = new SkinData("eyJ0aW1lc3RhbXAiOjE1MDQ5MTg0MTMxNTksInByb2ZpbGVJZCI6IjI2YTVmMDc5ZTNkOTRkZGY5YzdjMjc4NTcxNGIzZWU2IiwicHJvZmlsZU5hbWUiOiJFMDgiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dHVyZXMiOnsiU0tJTiI6eyJtZXRhZGF0YSI6eyJtb2RlbCI6InNsaW0ifSwidXJsIjoiaHR0cDovL3RleHR1cmVzLm1pbmVjcmFmdC5uZXQvdGV4dHVyZS9hYjM0N2NhZWI0OTZlMTc0NDZiNjhlNGFmYmFjN2Y5YTNiMGE5ZTBhODI0MjAxNTM1ZGY3NDc4YmNkNzJjYSJ9fX0=", "rtQw9X3Xzekqfqiy/L7/2YH8+fLdH1jzGoDoKd2nC0c/h7IK/FfQOqC6odwDrW5liPf/VKrCTgl6uUWchOczmBeR4la6lvJMIY3Lz59qAWEfm7VHYSqiu6wYMfHWQpDU4N1Ethy4oridsavr3EAiGrONZmlGoGtZkMWt1/IEMJaH5SwVnFPkYaHVDiHrQkQ1Izlr5ZBG9SkpdhSnnviHq3swMhw6WKoBxS7jb6WXSzdwVQE5Bt0z4J2iWjZosJRKssd47T10w7Me/F+8kbgNozIp98ga99iC/moRrQxDuvrCpxdGAmjw5xq0TXprrZW04PdU2SFiZwyKgtpVpr9lDNNUCfMkkSzpaHiLXlrNvHK4M9BBo6mn2RerpA1ABBryPCcniAvPB8OEx7ktWSDN+708ZJ6u+9DelEzxfK7MTcJQkKln0T7ktxKXDafX0ALYkCLFMWKInuDSXsIgklCH/vtGLbYXdDdpwvTRMsKt+QCb7K/xMMqLgRylc4ae6i3MYCWJxi9KGRhZclrjsMacpAl8a+kS+RJdfJa8HKl7yKpEGClblQQ6vKfCNVok4neLzVJ+6OpPiHUcX6S66Lqt2cJ/aaKuouRLB7/gy+bCTT7SLxboLxw7EQkakBd2BXa3hK3LHKqoYkAmJAUrr/jl7Z/gjXzASvrak2kzR9ZNVqg="); 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="); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java index 9129d4a85..cbfb7a1c5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/account/repository/AccountRepository.java @@ -42,7 +42,7 @@ public class AccountRepository extends MinecraftRepository private static String CREATE_RANKS_TABLE = "CREATE TABLE IF NOT EXISTS accountRanks (id INT NOT NULL AUTO_INCREMENT, accountId INT NOT NULL, rankIdentifier VARCHAR(40), primaryGroup BOOL, PRIMARY KEY(id), INDEX accountIndex (accountId), INDEX rankIndex (rankIdentifier), UNIQUE INDEX additionalIndex (accountId, rankIdentifier, primaryGroup), FOREIGN KEY (accountId) REFERENCES accounts(id));"; private static String UPDATE_PRIMARY_RANK = "UPDATE accountRanks SET rankIdentifier=? WHERE accountId=? AND primaryGroup=true;"; - private static String ADD_PRIMARY_RANK = "INSERT INTO accountRanks (accountId, rankIdentifier, primaryGroup) VALUES (?, NULL, true);"; + private static String ADD_PRIMARY_RANK = "INSERT INTO accountRanks (accountId, rankIdentifier, primaryGroup) VALUES (?, 'NULL', true);"; private static String ADD_ADDITIONAL_RANK = "INSERT INTO accountRanks (accountId, rankIdentifier, primaryGroup) VALUES (?, ?, false);"; private static String REMOVE_ADDITIONAL_RANK = "DELETE FROM accountRanks WHERE accountId=? AND rankIdentifier=? AND primaryGroup=false;"; private static String REMOVE_ADDITIONAL_RANKS = "DELETE FROM accountRanks WHERE accountId=? AND primaryGroup=false;"; @@ -100,11 +100,10 @@ public class AccountRepository extends MinecraftRepository statement.execute("SELECT * FROM accountRanks WHERE accountId=" + accountId + ";"); try (ResultSet rankSet = statement.getResultSet()) { - boolean anyRows = false; while (rankSet.next()) { - anyRows = true; - PermissionGroup group = PermissionGroup.valueOf(rankSet.getString("rankIdentifier")); + String identifier = rankSet.getString("rankIdentifier"); + PermissionGroup group = identifier.equals("NULL") ? null : PermissionGroup.valueOf(identifier); boolean primary = rankSet.getBoolean("primaryGroup"); if (primary) @@ -113,14 +112,12 @@ public class AccountRepository extends MinecraftRepository } else { - extraRanks.add(group); + if (group != null) + { + extraRanks.add(group); + } } } - - if (!anyRows) - { - statement.execute(UPDATE_PRIMARY_RANK.replace("?", "" + accountId)); - } } final int finalId = accountId; @@ -239,7 +236,7 @@ public class AccountRepository extends MinecraftRepository { if (!rs.next() || rs.getInt(1) == 0) { - s.execute(ADD_PRIMARY_RANK.replace("?", "" + accountId)); + s.execute(ADD_PRIMARY_RANK.replace("?", String.valueOf(accountId))); } } @@ -341,13 +338,7 @@ public class AccountRepository extends MinecraftRepository { try (Statement s = c.createStatement()) { - try (ResultSet rs = s.executeQuery("SELECT COUNT(*) FROM accountRanks WHERE accountId=" + accountId + " AND primaryGroup=true;")) - { - if (!rs.next()) - { - s.execute(ADD_PRIMARY_RANK.replace("?", "" + accountId)); - } - } + int primaryFound = 0; try (ResultSet rs = s.executeQuery("SELECT * FROM accountRanks WHERE accountId=" + accountId + ";")) { while (rs.next()) @@ -356,11 +347,19 @@ public class AccountRepository extends MinecraftRepository { removed.add(PermissionGroup.valueOf(rs.getString("rankIdentifier"))); } + else + { + primaryFound++; + } } } + if (primaryFound < 1) + { + s.execute(ADD_PRIMARY_RANK.replace("?", String.valueOf(accountId))); + } } - executeUpdate(c, UPDATE_PRIMARY_RANK, () -> {}, new ColumnVarChar("rankIdentifier", 255, "PLAYER"), new ColumnInt("accountId", accountId)); + executeUpdate(c, UPDATE_PRIMARY_RANK, () -> {}, new ColumnVarChar("rankIdentifier", 255, PermissionGroup.PLAYER.name()), new ColumnInt("accountId", accountId)); executeUpdate(c, REMOVE_ADDITIONAL_RANKS, () -> success.set(false), new ColumnInt("accountId", accountId)); } catch (SQLException e) @@ -406,7 +405,14 @@ public class AccountRepository extends MinecraftRepository { if (rs.getBoolean("primaryGroup")) { - primary.set(PermissionGroup.valueOf(rs.getString("rankIdentifier"))); + if (rs.getString("rankIdentifier").equals("NULL")) + { + primary.set(null); + } + else + { + primary.set(PermissionGroup.valueOf(rs.getString("rankIdentifier"))); + } } else { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java index 6f6d723de..e55855a6d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/antihack/AntiHack.java @@ -108,10 +108,15 @@ public class AntiHack extends MiniPlugin .put(FastBow.class, new CheckThresholds("FastBow", 10, 20, 30)) .build(); + public static final Map, CheckThresholds> STRICT_CHECKS = ImmutableMap., CheckThresholds>builder() + .put(Glide.class, new CheckThresholds("Flying", 600, 1200, 1600)) + .put(Speed.class, new CheckThresholds("Speed", 600, 1200, 1600)) + .build(); + private static final CheckThresholds NOOP_THRESHOLD = new CheckThresholds("Unknown", Integer.MAX_VALUE, Integer.MAX_VALUE, Integer.MAX_VALUE); public static final Map, AntiHackAction> ACTIONS = ImmutableMap., AntiHackAction>builder() - .put(KillauraTypeA.class, new ImmediateBanAction(200)) + .put(KillauraTypeA.class, new ImmediateBanAction(150)) .put(KillauraTypeD.class, new BanwaveAction(1500)) .put(KillauraTypeF.class, new BanwaveAction(600)) .put(Glide.class, new ImmediateBanAction(7500)) @@ -123,6 +128,11 @@ public class AntiHack extends MiniPlugin .put(KillauraTypeB.class, new GEPBanAction(100)) .build(); + public static final Map, AntiHackAction> STRICT_ACTIONS = ImmutableMap., AntiHackAction>builder() + .put(Glide.class, new ImmediateBanAction(2200)) + .put(Speed.class, new ImmediateBanAction(2200)) + .build(); + private static final AntiHackAction NOOP_ACTION = new NoopAction(); private static final String NAME = "Chiss"; @@ -475,9 +485,15 @@ public class AntiHack extends MiniPlugin return; } - ACTIONS.getOrDefault(event.getCheckClass(), NOOP_ACTION).handle(event); - CheckThresholds thresholds = CHECKS.getOrDefault(event.getCheckClass(), NOOP_THRESHOLD); + AntiHackAction action = ACTIONS.getOrDefault(event.getCheckClass(), NOOP_ACTION); + if (_strict) + { + thresholds = STRICT_CHECKS.getOrDefault(event.getCheckClass(), thresholds); + action = STRICT_ACTIONS.getOrDefault(event.getCheckClass(), action); + } + action.handle(event); + CheckThresholds.Severity severity = thresholds.getSeverity(event.getViolations()); if (severity == CheckThresholds.Severity.NONE) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java index df7a8e243..0f87c2f6d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/CosmeticManager.java @@ -69,12 +69,6 @@ public class CosmeticManager extends MiniPlugin _shop = new CosmeticShop(this, clientManager, donationManager, _moduleName); } - /*@Override - public void addCommands() - { - addCommand(new CosmeticsSlackCommand(this)); - }*/ - public void showInterface(boolean showInterface) { boolean changed = _showInterface == showInterface; @@ -244,9 +238,9 @@ public class CosmeticManager extends MiniPlugin return _punish; } - public void displayUI(Player player) + public CosmeticShop getShop() { - _shop.attemptShopOpen(player); + return _shop; } public void disableTeamArmor() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java index 3f67ca2c2..8616c741e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/CostumePage.java @@ -3,10 +3,8 @@ package mineplex.core.cosmetic.ui.page; import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; -import org.bukkit.event.inventory.ClickType; import mineplex.core.account.CoreClientManager; -import mineplex.core.common.currency.GlobalCurrency; import mineplex.core.common.util.C; import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.cosmetic.ui.CosmeticShop; @@ -17,9 +15,7 @@ import mineplex.core.gadget.gadgets.outfit.spacesuit.OutfitSpaceSuit; import mineplex.core.gadget.gadgets.outfit.stpatricks.OutfitStPatricksSuit; import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.GadgetType; -import mineplex.core.gadget.types.ItemGadget; import mineplex.core.gadget.types.OutfitGadget; -import mineplex.core.shop.item.IButton; import mineplex.core.shop.item.ShopItem; public class CostumePage extends GadgetPage @@ -92,21 +88,4 @@ public class CostumePage extends GadgetPage addBackButton(); } - - public void activateGadget(Player player, Gadget gadget) - { - if (gadget instanceof ItemGadget) - { - if (getPlugin().getInventoryManager().Get(player).getItemCount(gadget.getName()) <= 0) - { - purchaseGadget(player, gadget); - return; - } - } - - playAcceptSound(player); - gadget.enable(player); - - buildPage(); - } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java index 365d223e2..27995bae6 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/GadgetPage.java @@ -122,15 +122,10 @@ public class GadgetPage extends ShopPageBase protected void addBackButton(int slot) { - addButton(4, new ShopItem(Material.BED, C.cGreen + "Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player))); + addButton(slot, new ShopItem(Material.BED, C.cGreen + "Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), new Menu(getPlugin(), getShop(), getClientManager(), getDonationManager(), player))); } protected void addGadget(Gadget gadget, int slot) - { - addGadget(gadget, slot, false); - } - - protected void addGadget(Gadget gadget, int slot, boolean locked) { boolean owns = gadget.ownsGadget(getPlayer()); int shardCost = gadget.getCost(GlobalCurrency.TREASURE_SHARD); @@ -161,7 +156,7 @@ public class GadgetPage extends ShopPageBase } } - if (!owns || locked) + if (!owns) { int displayedShardCost = shardCost; @@ -300,7 +295,7 @@ public class GadgetPage extends ShopPageBase addCustomLore(gadget, itemLore); - if (owns && !locked) + if (owns) { ItemStack gadgetItemStack; @@ -421,7 +416,6 @@ public class GadgetPage extends ShopPageBase public void handleRightClick(Player player, Gadget gadget) { - player.sendMessage("Preview?"); } public void deactivateGadget(Player player, Gadget gadget) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ItemGadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ItemGadgetPage.java index 07f608f15..8c5e41c39 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ItemGadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/ItemGadgetPage.java @@ -36,11 +36,6 @@ public class ItemGadgetPage extends GadgetPage @Override public void purchaseGadget(Player player, Gadget gadget) { - if (gadget.getCost(GlobalCurrency.TREASURE_SHARD) <= 0) - { - return; - } - ItemGadget itemGadget = (ItemGadget) gadget; if (itemGadget.getAmmo() != null && itemGadget.getAmmo().getCost(GlobalCurrency.TREASURE_SHARD) <= 0) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java index 26fb4b760..c7725753b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/Menu.java @@ -1,7 +1,5 @@ package mineplex.core.cosmetic.ui.page; -import java.util.ArrayList; -import java.util.Arrays; import java.util.EnumMap; import java.util.List; import java.util.Map; @@ -14,7 +12,6 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.BannerMeta; import mineplex.core.account.CoreClientManager; -import mineplex.core.common.currency.GlobalCurrency; import mineplex.core.common.util.C; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilServer; @@ -58,21 +55,10 @@ public class Menu extends ShopPageBase @Override protected void buildPage() { - // Treasure Shards - int treasureShards = getDonationManager().Get(getPlayer()).getBalance(GlobalCurrency.TREASURE_SHARD); - - List shardLore = new ArrayList<>(); - shardLore.add(" "); - 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); - int deathSlot = 19; int jumpSlot = 28; int particleSlot = 1; int winEffectSlot = 13; - int shardSlot = 22; int arrowSlot = 10; int tauntSlot = 31; int gameModifierSlot = 21; @@ -86,9 +72,7 @@ public class Menu extends ShopPageBase int flagSlot = 34; int morphSlot = 25; int costumeSlot = 16; - int powerPlaySlot = 40; - - addItem(shardSlot, shards); + int powerPlaySlot = 22; EnumMap ownedCount = new EnumMap<>(GadgetType.class); EnumMap maxCount = new EnumMap<>(GadgetType.class); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/GameCosmeticGadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/GameCosmeticGadgetPage.java index f40998297..ff8709e21 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/GameCosmeticGadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/GameCosmeticGadgetPage.java @@ -1,5 +1,11 @@ package mineplex.core.cosmetic.ui.page.gamemodifiers; +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Material; +import org.bukkit.entity.Player; + import mineplex.core.account.CoreClientManager; import mineplex.core.common.util.C; import mineplex.core.cosmetic.CosmeticManager; @@ -7,10 +13,8 @@ import mineplex.core.cosmetic.ui.CosmeticShop; import mineplex.core.cosmetic.ui.page.GadgetPage; import mineplex.core.donation.DonationManager; import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory; -import mineplex.core.gadget.types.GameModifierGadget; +import mineplex.core.gadget.types.Gadget; import mineplex.core.shop.item.ShopItem; -import org.bukkit.Material; -import org.bukkit.entity.Player; public class GameCosmeticGadgetPage extends GadgetPage { @@ -20,7 +24,7 @@ public class GameCosmeticGadgetPage extends GadgetPage public GameCosmeticGadgetPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, GameCosmeticCategoryPage previousMenu, GameCosmeticCategory category) { - super(plugin, shop, clientManager, donationManager, name, player, null); + super(plugin, shop, clientManager, donationManager, name, player); _previousMenu = previousMenu; _category = category; @@ -31,18 +35,21 @@ public class GameCosmeticGadgetPage extends GadgetPage @Override protected void buildPage() { - int slot = 10; + super.buildPage(); - for (GameModifierGadget gadget : _category.getGadgets()) + if (_previousMenu != null) { - addGadget(gadget, slot); - - if (++slot % 9 == 8) - { - slot += 2; - } + addButton(4, new ShopItem(Material.BED, C.cGreen + "Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), _previousMenu)); } + else + { + removeButton(4); + } + } - addButton(4, new ShopItem(Material.BED, C.cGreen + " Go Back", new String[]{}, 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), _previousMenu)); + @Override + protected List getGadgetsToDisplay() + { + return new ArrayList<>(_category.getGadgets()); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinCategoryPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinCategoryPage.java index 126ba938c..7fc4bfd9e 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinCategoryPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinCategoryPage.java @@ -53,7 +53,7 @@ public class HeroSkinCategoryPage extends GadgetPage public HeroSkinCategoryPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, GameCosmeticCategoryPage previousMenu) { - super(plugin, shop, clientManager, donationManager, name, player, null); + super(plugin, shop, clientManager, donationManager, name, player); _previousMenu = previousMenu; @@ -99,6 +99,6 @@ public class HeroSkinCategoryPage extends GadgetPage addButton(slots[index++], itemStack, (player, clickType) -> getShop().openPageForPlayer(player, new HeroSkinGadgetPage(getPlugin(), getShop(), getClientManager(), getDonationManager(), name, getPlayer(), this, gadgetDataList))); } - addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), _previousMenu)); + addButton(4, new ShopItem(Material.BED, C.cGreen + "Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), _previousMenu)); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinGadgetPage.java b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinGadgetPage.java index 8edc9d69e..1dfebab2d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinGadgetPage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/cosmetic/ui/page/gamemodifiers/moba/HeroSkinGadgetPage.java @@ -22,7 +22,7 @@ public class HeroSkinGadgetPage extends GadgetPage HeroSkinGadgetPage(CosmeticManager plugin, CosmeticShop shop, CoreClientManager clientManager, DonationManager donationManager, String name, Player player, GadgetPage previousMenu, List gadgetData) { - super(plugin, shop, clientManager, donationManager, name, player, null); + super(plugin, shop, clientManager, donationManager, name, player); _previousMenu = previousMenu; _gadgetData = gadgetData; @@ -45,6 +45,6 @@ public class HeroSkinGadgetPage extends GadgetPage } } - addButton(4, new ShopItem(Material.BED, C.cGray + " \u21FD Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), _previousMenu)); + addButton(4, new ShopItem(Material.BED, C.cGreen + "Go Back", new String[0], 1, false), (player, clickType) -> getShop().openPageForPlayer(getPlayer(), _previousMenu)); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java index a6893e7b4..27b6bf932 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/GadgetManager.java @@ -46,6 +46,7 @@ import mineplex.core.gadget.commands.AmmoCommand; import mineplex.core.gadget.commands.LockCosmeticsCommand; import mineplex.core.gadget.commands.UnlockCosmeticsCommand; import mineplex.core.gadget.event.GadgetChangeEvent; +import mineplex.core.gadget.event.GadgetChangeEvent.GadgetState; import mineplex.core.gadget.event.GadgetCollideEntityEvent; import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.event.PlayerToggleSwimEvent; @@ -105,8 +106,6 @@ import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.GemHuntersMountGadg import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.GemHuntersMountType; import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.GameModifierMineStrikeSkin; import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.MineStrikeSkin; -import mineplex.core.gadget.gadgets.gamemodifiers.moba.emblems.EmblemGadget; -import mineplex.core.gadget.gadgets.gamemodifiers.moba.emblems.EmblemType; import mineplex.core.gadget.gadgets.gamemodifiers.moba.shopmorph.ShopMorphGadget; import mineplex.core.gadget.gadgets.gamemodifiers.moba.shopmorph.ShopMorphType; import mineplex.core.gadget.gadgets.gamemodifiers.moba.skins.HeroSkinGadget; @@ -170,6 +169,7 @@ import mineplex.core.gadget.gadgets.morph.managers.SwimManager; import mineplex.core.gadget.gadgets.morph.moba.MorphAnath; import mineplex.core.gadget.gadgets.morph.moba.MorphBardolf; import mineplex.core.gadget.gadgets.morph.moba.MorphBiff; +import mineplex.core.gadget.gadgets.morph.moba.MorphIvy; import mineplex.core.gadget.gadgets.morph.moba.MorphDana; import mineplex.core.gadget.gadgets.morph.moba.MorphDevon; import mineplex.core.gadget.gadgets.morph.moba.MorphHattori; @@ -422,7 +422,8 @@ public class GadgetManager extends MiniPlugin { PermissionGroup.QA.setPermission(Perm.LOCK_COSMETICS_COMMAND, true, true); PermissionGroup.QA.setPermission(Perm.UNLOCK_COSMETICS_COMMAND, true, true); - } else + } + else { PermissionGroup.ADMIN.setPermission(Perm.LOCK_COSMETICS_COMMAND, true, true); PermissionGroup.ADMIN.setPermission(Perm.UNLOCK_COSMETICS_COMMAND, true, true); @@ -564,6 +565,7 @@ public class GadgetManager extends MiniPlugin addGadget(new MorphRowena(this)); addGadget(new MorphLarissa(this)); addGadget(new MorphBiff(this)); + addGadget(new MorphIvy(this)); // Mounts addGadget(new MountUndead(this)); @@ -850,17 +852,17 @@ public class GadgetManager extends MiniPlugin } } }; - new GameCosmeticCategory(this, "Emblems", new ItemStack(Material.NETHER_STAR), false) - { - @Override - public void addGadgets() - { - for (EmblemType type : EmblemType.values()) - { - addGameGadget(new EmblemGadget(getManager(), this, type)); - } - } - }; +// new GameCosmeticCategory(this, "Emblems", new ItemStack(Material.NETHER_STAR), false) +// { +// @Override +// public void addGadgets() +// { +// for (EmblemType type : EmblemType.values()) +// { +// addGameGadget(new EmblemGadget(getManager(), this, type)); +// } +// } +// }; } }; @@ -1475,55 +1477,10 @@ public class GadgetManager extends MiniPlugin private void saveGadget(GadgetChangeEvent event) { Gadget gadget = event.getGadget(); + if (gadget != null) { - String value = "disabled", key; - GadgetType gadgetType = gadget.getGadgetType(); - switch (gadgetType) - { - case MUSIC_DISC: - case ITEM: - case MORPH: - case BALLOON: - case MOUNT: - return; - case COSTUME: - OutfitGadget outfitGadget = (OutfitGadget) gadget; - key = "activeCostume" + outfitGadget.getSlot().getDatabaseKey(); - if (event.getGadgetState() == GadgetChangeEvent.GadgetState.ENABLED) - { - value = outfitGadget.getName(); - } - break; - case GAME_MODIFIER: - GameModifierGadget gameModifierGadget = (GameModifierGadget) gadget; - GameCosmeticCategory category = gameModifierGadget.getCategory(); - - if (category.isAllowingMultiple()) - { - key = gameModifierGadget.getName(); - if (event.getGadgetState() == GadgetChangeEvent.GadgetState.ENABLED) - { - value = "enabled"; - } - } - else - { - key = "active" + category.getType().getName().replace(" ", ""); - if (event.getGadgetState() == GadgetChangeEvent.GadgetState.ENABLED) - { - value = gameModifierGadget.getName(); - } - } - break; - default: - key = gadgetType.getDatabaseKey(); - if (event.getGadgetState() == GadgetChangeEvent.GadgetState.ENABLED) - { - value = gadget.getName(); - } - } - _userGadgetPersistence.save(event.getPlayer(), key, value); + _userGadgetPersistence.save(event.getPlayer(), gadget, event.getGadgetState() == GadgetState.ENABLED); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java index f8e40fa0b..3cfdd2080 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/LockCosmeticsCommand.java @@ -15,14 +15,11 @@ import mineplex.core.pet.PetType; public class LockCosmeticsCommand extends CommandBase { - private GadgetManager _plugin; public LockCosmeticsCommand(GadgetManager plugin) { super(plugin, GadgetManager.Perm.LOCK_COSMETICS_COMMAND, "lockCosmetics"); - - _plugin = plugin; - } + } @Override public void Execute(Player caller, String[] args) @@ -38,7 +35,7 @@ public class LockCosmeticsCommand extends CommandBase if (player != null) { removeCosmetics(null, player); - UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Removed all the cosmetics to " + F.name(player.getName()) + "!")); + UtilPlayer.message(caller, F.main(Plugin.getName(), "Removed all the cosmetics to " + F.name(player.getName()) + "!")); } } } @@ -54,9 +51,9 @@ public class LockCosmeticsCommand extends CommandBase removePets(caller); return; } - Donor donor = _plugin.getDonationManager().Get(caller); + Donor donor = Plugin.getDonationManager().Get(caller); int removed = 0; - for (Gadget gadget : _plugin.getGadgets(gadgetType)) + for (Gadget gadget : Plugin.getGadgets(gadgetType)) { if (gadget != null) { @@ -77,7 +74,7 @@ public class LockCosmeticsCommand extends CommandBase } } } - UtilPlayer.message(caller, F.main("Lock Cosmetics", "Removed " + removed + F.elem(" " + gadgetType.getCategoryType()) + UtilText.plural(" item", removed) + "!")); + UtilPlayer.message(caller, F.main(Plugin.getName(), "Removed " + removed + F.elem(" " + gadgetType.getCategoryType()) + UtilText.plural(" item", removed) + "!")); } private void removePets(Player caller) @@ -85,11 +82,11 @@ public class LockCosmeticsCommand extends CommandBase int removed = 0; for (PetType pet : PetType.values()) { - if (_plugin.getPetManager().Get(caller).getPets().remove(pet) != null) + if (Plugin.getPetManager().Get(caller).getPets().remove(pet) != null) { removed++; } } - UtilPlayer.message(caller, F.main("Lock Cosmetics", "Removed " + removed + UtilText.plural(" pet", removed) + "!")); + UtilPlayer.message(caller, F.main(Plugin.getName(), "Removed " + removed + UtilText.plural(" pet", removed) + "!")); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java index 5619d5be3..0317e1217 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/commands/UnlockCosmeticsCommand.java @@ -16,14 +16,10 @@ import mineplex.core.pet.PetType; public class UnlockCosmeticsCommand extends CommandBase { - - private GadgetManager _plugin; - + public UnlockCosmeticsCommand(GadgetManager plugin) { super(plugin, GadgetManager.Perm.UNLOCK_COSMETICS_COMMAND, "unlockCosmetics"); - - _plugin = plugin; } @Override @@ -43,7 +39,7 @@ public class UnlockCosmeticsCommand extends CommandBase if (player != null) { addCosmetics(null, player); - UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Added all the cosmetics to " + F.name(player.getName()) + "!")); + UtilPlayer.message(caller, F.main(Plugin.getName(), "Added all the cosmetics to " + F.name(player.getName()) + "!")); } } } @@ -55,7 +51,7 @@ public class UnlockCosmeticsCommand extends CommandBase if (player != null) { addCosmetics(null, player); - UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Added all the cosmetics to " + F.name(player.getName()) + "!")); + UtilPlayer.message(caller, F.main(Plugin.getName(), "Added all the cosmetics to " + F.name(player.getName()) + "!")); } } } @@ -73,9 +69,9 @@ public class UnlockCosmeticsCommand extends CommandBase addPets(caller); return; } - Donor donor = _plugin.getDonationManager().Get(caller); + Donor donor = Plugin.getDonationManager().Get(caller); int added = 0; - for (Gadget gadget : _plugin.getGadgets(gadgetType)) + for (Gadget gadget : Plugin.getGadgets(gadgetType)) { if (gadget.isHidden()) { @@ -103,7 +99,7 @@ public class UnlockCosmeticsCommand extends CommandBase added++; } } - UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Added " + added + F.elem(" " + gadgetType.getCategoryType()) + UtilText.plural(" item", added) + "!")); + UtilPlayer.message(caller, F.main(Plugin.getName(), "Added " + added + F.elem(" " + gadgetType.getCategoryType()) + UtilText.plural(" item", added) + "!")); } private void addPets(Player caller) @@ -111,12 +107,12 @@ public class UnlockCosmeticsCommand extends CommandBase int added = 0; for (PetType pet : PetType.values()) { - if (!_plugin.getPetManager().Get(caller).getPets().containsKey(pet)) + if (!Plugin.getPetManager().Get(caller).getPets().containsKey(pet)) { - _plugin.getPetManager().Get(caller).getPets().put(pet, pet.getName()); + Plugin.getPetManager().Get(caller).getPets().put(pet, pet.getName()); added++; } } - UtilPlayer.message(caller, F.main("Unlock Cosmetics", "Added " + added + UtilText.plural(" pet", added) + "!")); + UtilPlayer.message(caller, F.main(Plugin.getName(), "Added " + added + UtilText.plural(" pet", added) + "!")); } } \ No newline at end of file diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticCategory.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticCategory.java index 24971d884..af651fecd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticCategory.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticCategory.java @@ -3,8 +3,10 @@ package mineplex.core.gadget.gadgets.gamemodifiers; import java.util.ArrayList; import java.util.List; +import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; +import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.cosmetic.ui.page.GadgetPage; import mineplex.core.cosmetic.ui.page.gamemodifiers.GameCosmeticCategoryPage; import mineplex.core.cosmetic.ui.page.gamemodifiers.GameCosmeticGadgetPage; @@ -43,6 +45,11 @@ public abstract class GameCosmeticCategory _manager.addGadget(gadget); } + public GadgetPage getGadgetPage(CosmeticManager manager, Player player) + { + return new GameCosmeticGadgetPage(manager, manager.getShop(), _manager.getClientManager(), _manager.getDonationManager(), _categoryName, player, null, this); + } + public GadgetPage getGadgetPage(GameCosmeticCategoryPage parent) { return new GameCosmeticGadgetPage(parent.getPlugin(), parent.getShop(), parent.getClientManager(), parent.getDonationManager(), _categoryName, parent.getClient().GetPlayer(), parent, this); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticManager.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticManager.java index 74eb2a4c9..84b0b37b8 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/GameCosmeticManager.java @@ -19,6 +19,7 @@ import mineplex.core.gadget.types.GameModifierGadget; import mineplex.core.game.GameDisplay; @ReflectivelyCreateMiniPlugin +// TODO Remove all the string literals for cosmetic categories public class GameCosmeticManager extends MiniPlugin { @@ -133,7 +134,7 @@ public class GameCosmeticManager extends MiniPlugin return gadgetsCloned; } - private GameCosmeticCategory getCategoryFrom(GameDisplay gameType, String categoryName) + public GameCosmeticCategory getCategoryFrom(GameDisplay gameType, String categoryName) { if (gameType == null || categoryName == null) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountGadget.java index 0004ecbec..8c5024b5d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountGadget.java @@ -12,12 +12,13 @@ public class GemHuntersMountGadget extends GameModifierGadget private final GemHuntersMountType _type; + // An alternative package name of "Clans " + name is due to mounts from the store originally just for clans being available on more platforms. public GemHuntersMountGadget(GadgetManager manager, GameCosmeticCategory category, GemHuntersMountType type) { - super(manager, category, type.getName() + " Mount", new String[] { + super(manager, category, type.getName(), new String[]{ C.cGray + "Changed your active Mount", C.cGray + "in " + F.greenElem("Gem Hunters") + " to " + type.getName() + ".", - }, CostConstants.PURCHASED_FROM_STORE, type.getMaterial(), type.getMaterialData()); + }, CostConstants.PURCHASED_FROM_STORE, type.getMaterial(), type.getMaterialData(), "Clans " + type.getName()); _type = type; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountType.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountType.java index 5f9d2ed11..2b613c4c0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/gemhunters/GemHuntersMountType.java @@ -1,26 +1,235 @@ package mineplex.core.gadget.gadgets.gamemodifiers.gemhunters; +import org.bukkit.DyeColor; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Horse; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Horse.Style; import org.bukkit.entity.Horse.Variant; +import mineplex.core.Managers; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.disguise.DisguiseManager; +import mineplex.core.disguise.disguises.DisguiseBase; +import mineplex.core.disguise.disguises.DisguiseCow; +import mineplex.core.disguise.disguises.DisguiseSheep; +import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.core.utils.UtilVariant; public enum GemHuntersMountType { - DONKEY("Donkey", Material.CHEST) + INFERNAL_HORROR("Infernal Horror Mount Skin", Material.BONE) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + return UtilVariant.spawnHorse(location, Variant.SKELETON_HORSE); + } + + @Override + public void onUpdate(UpdateEvent event, Horse horse) + { + if (event.getType() != UpdateType.TICK) + { + return; + } + + UtilParticle.PlayParticleToAll(ParticleType.FLAME, horse.getLocation().add(0, 1, 0), 0.25F, 0.25F, 0.25F, 0, 2, ViewDist.NORMAL); + } + }, + GLACIAL_STEED("Glacial Steed Mount Skin", Material.SNOW_BALL) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + Horse horse = UtilVariant.spawnHorse(location, Variant.HORSE); + + horse.setColor(Color.WHITE); + horse.setStyle(Style.WHITE); + + return horse; + } + + @Override + public void onUpdate(UpdateEvent event, Horse horse) + { + if (event.getType() != UpdateType.TICK) + { + return; + } + + UtilParticle.PlayParticleToAll(ParticleType.SNOW_SHOVEL, horse.getLocation().add(0, 1, 0), 0.25F, 0.25F, 0.25F, 0.1F, 4, ViewDist.NORMAL); + } + }, + ZOMBIE_HORSE("Zombie Horse Mount Skin", Material.ROTTEN_FLESH) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + return UtilVariant.spawnHorse(location, Variant.UNDEAD_HORSE); + } + + @Override + public void onUpdate(UpdateEvent event, Horse horse) + { + if (event.getType() != UpdateType.TICK) + { + return; + } + + UtilParticle.PlayParticleToAll(ParticleType.FOOTSTEP, horse.getLocation().add(0, 0.2, 0), null, 0, 1, ViewDist.NORMAL); + } + }, + RAINBOW_SHEEP("Rainbow Sheep Mount Skin", Material.WOOL, 14) + { + + private DisguiseManager _disguise = Managers.get(DisguiseManager.class); + + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + Horse horse = UtilVariant.spawnHorse(location, Variant.HORSE); + + manager.disguise(new DisguiseSheep(horse)); + + return horse; + } + + @Override + public void onUpdate(UpdateEvent event, Horse horse) + { + if (event.getType() != UpdateType.FAST) + { + return; + } + + DisguiseBase base = _disguise.getActiveDisguise(horse); + + if (base == null || !(base instanceof DisguiseSheep)) + { + return; + } + + DisguiseSheep sheep = (DisguiseSheep) base; + int mod = horse.getTicksLived() % 40; + + if (mod == 0) sheep.setColor(DyeColor.RED); + else if (mod == 1) sheep.setColor(DyeColor.YELLOW); + else if (mod == 2) sheep.setColor(DyeColor.GREEN); + else if (mod == 3) sheep.setColor(DyeColor.BLUE); + } + }, + ROYAL_STEED("Royal Steed Mount Skin", Material.GOLD_BARDING) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + Horse horse = UtilVariant.spawnHorse(location, Variant.HORSE); + + horse.setColor(Color.WHITE); + horse.setStyle(Style.WHITE); + + return horse; + } + + @Override + public void onUpdate(UpdateEvent event, Horse horse) + { + if (event.getType() != UpdateType.TICK) + { + return; + } + + UtilParticle.PlayParticleToAll(ParticleType.BLOCK_DUST.getParticle(Material.GOLD_BLOCK, 0), horse.getLocation().add(0, 1, 0), 0.25F, 0.25F, 0.25F, 0, 3, ViewDist.NORMAL); + } + }, + ROYAL_GUARD_STEED("Royal Guard Steed Mount Skin", Material.DIAMOND_BARDING) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + Horse horse = UtilVariant.spawnHorse(location, Variant.HORSE); + + horse.setColor(Color.WHITE); + horse.setStyle(Style.WHITE); + + return horse; + } + + @Override + public void onUpdate(UpdateEvent event, Horse horse) + { + if (event.getType() != UpdateType.TICK) + { + return; + } + + UtilParticle.PlayParticleToAll(ParticleType.BLOCK_DUST.getParticle(Material.IRON_BLOCK, 0), horse.getLocation().add(0, 1, 0), 0.25F, 0.25F, 0.25F, 0, 3, ViewDist.NORMAL); + } + }, + KNIGHT_STEED("Knight Steed Mount Skin", Material.DIAMOND_BARDING) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + Horse horse = UtilVariant.spawnHorse(location, Variant.HORSE); + + horse.setColor(Color.GRAY); + horse.setStyle(Style.NONE); + + return horse; + } + + @Override + public void onUpdate(UpdateEvent event, Horse horse) + { + if (event.getType() != UpdateType.TICK) + { + return; + } + + UtilParticle.PlayParticleToAll(ParticleType.ICON_CRACK.getParticle(Material.APPLE, 0), horse.getLocation().add(0, 1, 0), 0.25F, 0.25F, 0.25F, 0, 3, ViewDist.NORMAL); + } + }, + COW("Cow Mount Skin", Material.MILK_BUCKET) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + Horse horse = UtilVariant.spawnHorse(location, Variant.HORSE); + + manager.disguise(new DisguiseCow(horse)); + + return horse; + } + }, + SHEEP("Sheep Mount Skin", Material.WOOL) + { + @Override + public Horse spawn(Location location, DisguiseManager manager) + { + Horse horse = UtilVariant.spawnHorse(location, Variant.HORSE); + + manager.disguise(new DisguiseSheep(horse)); + + return horse; + } + }, + TRUSTY_MULE("Trusty Mule Mount Skin", Material.APPLE) { @Override public Horse spawn(Location location, DisguiseManager manager) { return UtilVariant.spawnHorse(location, Variant.DONKEY); } + }, - }; + ; private final String _name; private final Material _material; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/emblems/EmblemType.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/emblems/EmblemType.java index 1d1506105..c3aad1965 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/emblems/EmblemType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/emblems/EmblemType.java @@ -33,7 +33,7 @@ public enum EmblemType public String getName() { - return _name; + return _name + " Emblem"; } public String getSchematic() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/shopmorph/ShopMorphType.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/shopmorph/ShopMorphType.java index 9e5460575..5bd271ed7 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/shopmorph/ShopMorphType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/shopmorph/ShopMorphType.java @@ -109,7 +109,7 @@ public enum ShopMorphType public String getName() { - return _name; + return _name + " Shop Skin"; } public Material getMaterial() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/skins/HeroSkinGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/skins/HeroSkinGadget.java index 536541e4b..2602d8ebb 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/skins/HeroSkinGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/gamemodifiers/moba/skins/HeroSkinGadget.java @@ -59,6 +59,22 @@ public class HeroSkinGadget extends GameModifierGadget return skinData; } + private static String[] getDescription(HeroSkinGadgetData skinData) + { + boolean hasDescription = !skinData.getDescription().isEmpty(); + String[] description = new String[hasDescription ? 3 : 2]; + + description[0] = C.cGray + "Rarity: " + skinData.getRarity().getColor() + skinData.getRarity().getName(); + description[1] = ""; + + if (hasDescription) + { + description[2] = C.cGray + ChatColor.translateAlternateColorCodes('&', skinData.getDescription()); + } + + return description; + } + private final HeroSkinGadgetData _gadgetData; public HeroSkinGadget(GadgetManager manager, GameCosmeticCategory category, HeroSkinGadgetData skinData) @@ -68,7 +84,7 @@ public class HeroSkinGadget extends GameModifierGadget public HeroSkinGadget(GadgetManager manager, GameCosmeticCategory category, HeroSkinGadgetData skinData, int cost) { - super(manager, category, skinData.getName(), new String[]{C.cGray + "Rarity: " + skinData.getRarity().getColor() + skinData.getRarity().getName(), "", C.cGray + ChatColor.translateAlternateColorCodes('&', skinData.getDescription())}, cost, Material.GLASS, (byte) 0); + super(manager, category, skinData.getName() + " (" + skinData.getHero() + ")", getDescription(skinData), cost, Material.GLASS, (byte) 0); setDisplayItem(skinData.getSkinData().getSkull()); skinData.setGadget(this); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java index 96fa54ed6..c6f264c73 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemEtherealPearl.java @@ -40,12 +40,6 @@ public class ItemEtherealPearl extends ItemGadget Material.ENDER_PEARL, (byte)0, 500, new Ammo("Ethereal Pearl", "50 Pearls", Material.ENDER_PEARL, (byte)0, new String[] { C.cWhite + "50 Pearls to get around with!" }, 500, 50)); } - - @Override - public void disableCustom(Player player, boolean message) - { - super.disableCustom(player, message); - } @Override public void ActivateCustom(Player player) diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java index aaaa6aa50..637edc91a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/item/ItemFirework.java @@ -14,6 +14,7 @@ import mineplex.core.common.util.F; import mineplex.core.common.util.LineFormat; import mineplex.core.common.util.UtilBlock; import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilPlayer; import mineplex.core.common.util.UtilText; import mineplex.core.gadget.GadgetManager; @@ -70,6 +71,6 @@ public class ItemFirework extends ItemGadget UtilFirework.launchFirework(loc, FireworkEffect.builder().flicker(Math.random() > 0.5).withColor(color).with(type).trail(Math.random() > 0.5).build(), - new Vector(0,0,0), 0 + (int)(Math.random()*3)); + new Vector(0,0,0), UtilMath.r(3) + 1); } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphAnath.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphAnath.java index bdbe333f0..a5769707c 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphAnath.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphAnath.java @@ -54,8 +54,8 @@ public class MorphAnath extends MorphGadget public MorphAnath(GadgetManager manager) { - super(manager, "Anath", UtilText.splitLinesToArray(new String[]{ - C.cGray + "TODO make a description", + super(manager, "Anath Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "BURN BEAM!!!!", "", C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Fireball" + C.cWhite + " to", C.cWhite + "fire out a huge wave of", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBardolf.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBardolf.java index 636b5c34e..ecfb8fa7b 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBardolf.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBardolf.java @@ -65,8 +65,8 @@ public class MorphBardolf extends MorphGadget public MorphBardolf(GadgetManager manager) { - super(manager, "Bardolf", UtilText.splitLinesToArray(new String[]{ - C.cGray + "TODO make a description", + super(manager, "Bardolf Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "Play fetch with 5 puppers of your very own!", "", C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Bone" + C.cWhite + " to", C.cWhite + "play " + C.cYellow + "Fetch" + C.cWhite + " with your wolves!" diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBiff.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBiff.java index 23cdad8bf..ed549ed24 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBiff.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphBiff.java @@ -50,8 +50,8 @@ public class MorphBiff extends MorphGadget public MorphBiff(GadgetManager manager) { - super(manager, "Biff", UtilText.splitLinesToArray(new String[]{ - C.cGray + "TODO make description", + super(manager, "Biff Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "REEEEEEEEEEEEEEEE", "", C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Nether Star" + C.cWhite + " to", C.cWhite + "mount your " + C.cYellow + "Horse" + C.cWhite + " and", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDana.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDana.java index de8345d26..6d13b3ea3 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDana.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDana.java @@ -67,8 +67,8 @@ public class MorphDana extends MorphGadget public MorphDana(GadgetManager manager) { - super(manager, "Dana", UtilText.splitLinesToArray(new String[]{ - C.cGray + "TODO make a description", + super(manager, "Dana Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "Get pranked chest opener.", "", C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Nether Star" + C.cWhite + " to", C.cWhite + "deploy your " + C.cYellow + "Rally" + C.cWhite + ".", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDevon.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDevon.java index 6a366105d..a3ba435b5 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDevon.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphDevon.java @@ -50,7 +50,7 @@ public class MorphDevon extends MorphGadget public MorphDevon(GadgetManager manager) { - super(manager, "Devon", UtilText.splitLinesToArray(new String[]{ + super(manager, "Devon Morph", UtilText.splitLinesToArray(new String[]{ C.cGray + "You thought this was overpowered in game?", C.cGray + "Well now you shoot TNT", C.cGray + "at unsuspecting players in the hub!", @@ -108,7 +108,7 @@ public class MorphDevon extends MorphGadget return; } - if (!Recharge.Instance.use(player, "TNT Infusion", 1000, false, true, "Cosmetics")) + if (!Recharge.Instance.use(player, "TNT Infusion", 2000, false, true, "Cosmetics")) { event.setCancelled(true); return; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphHattori.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphHattori.java index a2c7de5fd..62a4c46f4 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphHattori.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphHattori.java @@ -46,7 +46,7 @@ public class MorphHattori extends MorphGadget public MorphHattori(GadgetManager manager) { - super(manager, "Hattori", UtilText.splitLinesToArray(new String[]{ + super(manager, "Hattori Morph", UtilText.splitLinesToArray(new String[]{ C.cGray + "Ever wanted to dash around", C.cGray + "the hub like a Ninja?", C.cGray + "Well now you can!", diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphIvy.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphIvy.java new file mode 100644 index 000000000..343ab1144 --- /dev/null +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphIvy.java @@ -0,0 +1,131 @@ +package mineplex.core.gadget.gadgets.morph.moba; + +import java.util.concurrent.TimeUnit; + +import org.bukkit.Effect; +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.block.Action; +import org.bukkit.event.block.BlockPhysicsEvent; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.inventory.ItemStack; + +import com.mojang.authlib.GameProfile; + +import mineplex.core.common.skin.SkinData; +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.UtilText; +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.gadget.util.CostConstants; +import mineplex.core.itemstack.ItemBuilder; +import mineplex.core.recharge.Recharge; +import mineplex.core.utils.UtilGameProfile; + +public class MorphIvy extends MorphGadget +{ + + private static final ItemStack ACTIVE_ITEM = new ItemBuilder(Material.VINE) + .setTitle(C.cGreenB + "Ivy's Flower Display") + .addLore("Click to fire out a beam of water that knocks back", "players that it hits.") + .build(); + private static final int ACTIVE_SLOT = 2; + private static final int RADIUS = 5; + private static final long DURATION = TimeUnit.SECONDS.toMillis(8); + + public MorphIvy(GadgetManager manager) + { + super(manager, "Ivy Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "Roses are red, violets are violet.", + "", + C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Vines" + C.cWhite + " to", + C.cWhite + "create a " + C.cYellow + "Flower" + C.cWhite + " display.", + }, LineFormat.LORE), CostConstants.FOUND_IN_MOBA_CHESTS, Material.GLASS, (byte) 0); + setDisplayItem(SkinData.IVY.getSkull()); + } + + @Override + public void enableCustom(Player player, boolean message) + { + applyArmor(player, message); + + GameProfile gameProfile = UtilGameProfile.getGameProfile(player); + gameProfile.getProperties().clear(); + gameProfile.getProperties().put("textures", SkinData.IVY.getProperty()); + + DisguisePlayer disguisePlayer = new DisguisePlayer(player, gameProfile); + disguisePlayer.showInTabList(true, 0); + UtilMorph.disguise(player, disguisePlayer, Manager); + + player.getInventory().setItem(ACTIVE_SLOT, ACTIVE_ITEM); + } + + @Override + public void disableCustom(Player player, boolean message) + { + removeArmor(player); + + UtilMorph.undisguise(player, Manager.getDisguiseManager()); + + player.getInventory().setItem(ACTIVE_SLOT, null); + } + + @EventHandler + public void interact(PlayerInteractEvent event) + { + if (event.getAction() == Action.PHYSICAL) + { + return; + } + + Player player = event.getPlayer(); + ItemStack itemStack = event.getItem(); + + if (!isActive(player) || itemStack == null || !itemStack.equals(ACTIVE_ITEM)) + { + return; + } + + event.setCancelled(true); + + if (!Recharge.Instance.use(player, "Floral Display", 16000, true, true, "Cosmetics")) + { + return; + } + + Location location = player.getLocation(); + + for (Block block : UtilBlock.getInRadius(location, RADIUS).keySet()) + { + if (block.getType() != Material.AIR || UtilBlock.airFoliage(block.getRelative(BlockFace.DOWN))) + { + continue; + } + + Manager.getBlockRestore().add(block, Material.RED_ROSE.getId(), (byte) (UtilMath.r(8) + 1), DURATION + (UtilMath.rRange(-500, 500))); + + if (Math.random() > 0.7) + { + block.getWorld().playEffect(block.getLocation().add(0.5, 0.5, 0.5), Effect.STEP_SOUND, Material.RED_ROSE); + } + } + } + + @EventHandler + public void blockPhysics(BlockPhysicsEvent event) + { + if (event.getChangedType() == Material.RED_ROSE) + { + event.setCancelled(true); + } + } +} diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphLarissa.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphLarissa.java index e568bac84..7806954e0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphLarissa.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphLarissa.java @@ -42,8 +42,8 @@ public class MorphLarissa extends MorphGadget public MorphLarissa(GadgetManager manager) { - super(manager, "Larissa", UtilText.splitLinesToArray(new String[]{ - C.cGray + "TODO make description", + super(manager, "Larissa Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "Become a water mage and splash your enemies away!", "", C.cGreen + "Click" + C.cWhite + " your " + C.cYellow + "Wand" + C.cWhite + " to fire", C.cWhite + "a beam of " + C.cWhite + "Water" + C.cWhite + " that", @@ -96,7 +96,7 @@ public class MorphLarissa extends MorphGadget event.setCancelled(true); - if (!Recharge.Instance.use(player, "Aqua Cannon", 4000,true, true, "Cosmetics")) + if (!Recharge.Instance.use(player, "Aqua Cannon", 4000, true, true, "Cosmetics")) { return; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphRowena.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphRowena.java index 966dc014e..f3607885d 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphRowena.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/morph/moba/MorphRowena.java @@ -43,8 +43,8 @@ public class MorphRowena extends MorphGadget public MorphRowena(GadgetManager manager) { - super(manager, "Rowena", UtilText.splitLinesToArray(new String[]{ - C.cGray + "TODO make description", + super(manager, "Rowena Morph", UtilText.splitLinesToArray(new String[]{ + C.cGray + "Make the hub a little brighter with Rowena's Light Arrows.", "", C.cGreen + "Shoot" + C.cWhite + " your " + C.cYellow + "Bow" + C.cWhite + " to fire", C.cWhite + "arrows to be imbued with " + C.cYellow + "Light" + C.cWhite + ".", @@ -99,7 +99,7 @@ public class MorphRowena extends MorphGadget event.setCancelled(true); - if (!Recharge.Instance.use(player, "Light Arrows", 1000, false, true, "Cosmetics")) + if (!Recharge.Instance.use(player, "Light Arrows", 500, false, true, "Cosmetics")) { return; } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/mount/Mount.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/mount/Mount.java index 0f1a7f3f3..3d6db984a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/mount/Mount.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/gadgets/mount/Mount.java @@ -155,7 +155,8 @@ public abstract class Mount extends Gadget UtilAction.velocity(part, direction, 1.2, false, 0, 0.8, 10, true); } - direction.multiply(-1); + direction.setX(-direction.getX()); + direction.setZ(-direction.getZ()); for (Entity part : otherParts) { diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/persistence/UserGadgetPersistence.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/persistence/UserGadgetPersistence.java index ad40df21c..3f62be744 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/persistence/UserGadgetPersistence.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/persistence/UserGadgetPersistence.java @@ -1,19 +1,15 @@ package mineplex.core.gadget.persistence; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.util.*; +import org.bukkit.entity.Player; import mineplex.core.common.util.BukkitFuture; -import mineplex.core.common.util.F; import mineplex.core.database.PlayerKeyValueRepository; import mineplex.core.gadget.GadgetManager; import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory; import mineplex.core.gadget.types.Gadget; -import mineplex.core.gadget.types.GameModifierGadget; import mineplex.core.gadget.types.GadgetType; +import mineplex.core.gadget.types.GameModifierGadget; import mineplex.core.gadget.types.OutfitGadget; -import org.bukkit.entity.Player; public class UserGadgetPersistence { @@ -24,19 +20,22 @@ public class UserGadgetPersistence public UserGadgetPersistence(GadgetManager manager) { _manager = manager; - _repository = new PlayerKeyValueRepository<>("gadgets", PreparedStatement::setString, ResultSet::getString); + _repository = new PlayerKeyValueRepository<>("gadgets", String.class); } public void load(Player player) { - _repository.getAll(player.getUniqueId()).thenCompose(BukkitFuture.accept(values -> { + _repository.getAll(player.getUniqueId()).thenCompose(BukkitFuture.accept(values -> + { if (player.isOnline()) { - boolean enabledGadget = false; for (Gadget gadget : _manager.getAllGadgets()) { if (!gadget.ownsGadget(player)) + { continue; + } + GadgetType gadgetType = gadget.getGadgetType(); switch (gadgetType) { @@ -54,7 +53,6 @@ public class UserGadgetPersistence if (values.get(key).equals(gadget.getName())) { gadget.enable(player, false); - enabledGadget = true; } break; case GAME_MODIFIER: @@ -68,48 +66,95 @@ public class UserGadgetPersistence if (values.get(gadget.getName()).equals("enabled")) { gadget.enable(player, false); - enabledGadget = true; } } else { - String dataKey = "active" + category.getType().getName().replace(" ", ""); - if (!values.containsKey(dataKey)) + key = "active" + category.getType().getName().replace(" ", "") + category.getCategoryName().replace(" ", ""); + if (!values.containsKey(key)) continue; - if (values.get(dataKey).equals(gadget.getName())) + if (values.get(key).equals(gadget.getName())) { gadget.enable(player, false); - enabledGadget = true; } } break; default: if (!values.containsKey(gadgetType.getDatabaseKey())) + { continue; + } + if (values.get(gadgetType.getDatabaseKey()).equals(gadget.getName())) { gadget.enable(player, false); - enabledGadget = true; } break; } } - if (enabledGadget) - { - player.sendMessage(F.main("Cosmetics", "You enabled all your previously enabled cosmetics!")); - } } })); } - public void save(Player player, Map values) + public void save(Player player, Gadget gadget, boolean enabled) { - _repository.putAll(player.getUniqueId(), values); - } + String value = "disabled", key; + GadgetType gadgetType = gadget.getGadgetType(); - public void save(Player player, String key, String value) - { - _repository.put(player.getUniqueId(), key, value); + switch (gadgetType) + { + case MUSIC_DISC: + case ITEM: + case MORPH: + case BALLOON: + case MOUNT: + return; + case COSTUME: + OutfitGadget outfitGadget = (OutfitGadget) gadget; + key = "activeCostume" + outfitGadget.getSlot().getDatabaseKey(); + + if (enabled) + { + value = outfitGadget.getName(); + } + break; + case GAME_MODIFIER: + GameModifierGadget gameModifierGadget = (GameModifierGadget) gadget; + GameCosmeticCategory category = gameModifierGadget.getCategory(); + + if (category.isAllowingMultiple()) + { + key = gameModifierGadget.getName(); + if (enabled) + { + value = "enabled"; + } + } + else + { + key = "active" + category.getType().getName().replace(" ", "") + category.getCategoryName().replace(" ", ""); + if (enabled) + { + value = gameModifierGadget.getName(); + } + } + break; + default: + key = gadgetType.getDatabaseKey(); + if (enabled) + { + value = gadget.getName(); + } + } + + if (!enabled) + { + _repository.remove(player.getUniqueId(), key); + } + else + { + _repository.put(player.getUniqueId(), key, value); + } } } diff --git a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GameModifierGadget.java b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GameModifierGadget.java index 3afd9c193..fb5dd2570 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GameModifierGadget.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/gadget/types/GameModifierGadget.java @@ -13,9 +13,9 @@ public class GameModifierGadget extends Gadget private final GameCosmeticCategory _category; - public GameModifierGadget(GadgetManager manager, GameCosmeticCategory category, String name, String[] desc, int cost, Material mat, byte data) + public GameModifierGadget(GadgetManager manager, GameCosmeticCategory category, String name, String[] desc, int cost, Material mat, byte data, String... alternativePackageNames) { - super(manager, GadgetType.GAME_MODIFIER, name, desc, cost, mat, data); + super(manager, GadgetType.GAME_MODIFIER, name, desc, cost, mat, data, 1, alternativePackageNames); _category = category; } @@ -23,14 +23,21 @@ public class GameModifierGadget extends Gadget @Override public void enableCustom(Player player, boolean message) { - _active.add(player); - - if (message) + if (_active.add(player) && message) { UtilPlayer.message(player, F.main("Gadget", "You enabled " + F.name(getName()) + " (" + F.name(_category.getCategoryName()) + ").")); } } + @Override + public void disableCustom(Player player, boolean message) + { + if (_active.remove(player) && message) + { + UtilPlayer.message(player, F.main(Manager.getName(), "You disabled " + F.name(getName()) + " (" + F.name(_category.getCategoryName()) + ").")); + } + } + public GameCosmeticCategory getCategory() { return _category; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java index ff66b9edc..0678d25cd 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardManager.java @@ -62,6 +62,7 @@ import mineplex.core.gadget.gadgets.flag.FlagType; import mineplex.core.gadget.gadgets.gamemodifiers.minestrike.MineStrikeSkin; import mineplex.core.gadget.gadgets.gamemodifiers.moba.skins.HeroSkinGadget; import mineplex.core.gadget.gadgets.gamemodifiers.moba.shopmorph.ShopMorphType; +import mineplex.core.gadget.gadgets.gamemodifiers.moba.skins.HeroSkinGadgetData; import mineplex.core.gadget.gadgets.hat.HatType; import mineplex.core.gadget.gadgets.item.ItemBatGun; import mineplex.core.gadget.gadgets.item.ItemBow; @@ -99,6 +100,7 @@ import mineplex.core.gadget.gadgets.morph.MorphVillager; import mineplex.core.gadget.gadgets.morph.moba.MorphAnath; import mineplex.core.gadget.gadgets.morph.moba.MorphBardolf; import mineplex.core.gadget.gadgets.morph.moba.MorphBiff; +import mineplex.core.gadget.gadgets.morph.moba.MorphIvy; import mineplex.core.gadget.gadgets.morph.moba.MorphDana; import mineplex.core.gadget.gadgets.morph.moba.MorphDevon; import mineplex.core.gadget.gadgets.morph.moba.MorphHattori; @@ -377,31 +379,33 @@ public class RewardManager // INFUSED CHESTS -// for (ShopMorphType shopMorphType : ShopMorphType.values()) -// { -// if (shopMorphType.getRarity() == rarity) -// { -// addMOBAShopSkin(Type.MOBA, shopMorphType, rarity, 1); -// } -// } - addMOBAShopSkin(Type.MOBA, ShopMorphType.SHEEP, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.COW, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.MOOSHROOM, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.PIG, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.HORSE, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.SNOW_GOLEM, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.IRON_GOLEM, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.ZOMBIE, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.SKELETON, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.SPIDER, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.SLIME, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.MAGMA_SLIME, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.WITHER_SKELETON, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.PIG_ZOMBIE, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.WITCH, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.BLAZE, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.GUARDIAN, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.ENDERMAN, rarity, 1); + for (ShopMorphType shopMorphType : ShopMorphType.values()) + { + if (shopMorphType.getRarity() == rarity) + { + addMOBAShopSkin(Type.MOBA, shopMorphType, rarity, 1); + } + } +// addMOBAShopSkin(Type.MOBA, ShopMorphType.SHEEP, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.COW, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.MOOSHROOM, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.PIG, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.HORSE, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.SNOW_GOLEM, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.IRON_GOLEM, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.ZOMBIE, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.SKELETON, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.SPIDER, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.SLIME, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.MAGMA_SLIME, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.WITHER_SKELETON, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.PIG_ZOMBIE, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.WITCH, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.BLAZE, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.GUARDIAN, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.ENDERMAN, rarity, 1); + + addAllMOBASkins(rarity); } public void addRare() @@ -702,16 +706,18 @@ public class RewardManager addGadget(Type.ILLUMINATED, getSingleParticleKitSelector(SingleParticleKitSelector.SingleParticleSelectors.FLAMES_OF_FURY), rarity, 150); addGadget(Type.MYTHICAL, getSingleParticleKitSelector(SingleParticleKitSelector.SingleParticleSelectors.FLAMES_OF_FURY), rarity, 150); -// for (ShopMorphType shopMorphType : ShopMorphType.values()) -// { -// if (shopMorphType.getRarity() == rarity) -// { -// addMOBAShopSkin(Type.MOBA, shopMorphType, rarity, 1); -// } -// } - addMOBAShopSkin(Type.MOBA, ShopMorphType.SANTA, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.BOB_ROSS, rarity, 1); - addMOBAShopSkin(Type.MOBA, ShopMorphType.REVOLUTIONARY, rarity, 1); + for (ShopMorphType shopMorphType : ShopMorphType.values()) + { + if (shopMorphType.getRarity() == rarity) + { + addMOBAShopSkin(Type.MOBA, shopMorphType, rarity, 1); + } + } +// addMOBAShopSkin(Type.MOBA, ShopMorphType.SANTA, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.BOB_ROSS, rarity, 1); +// addMOBAShopSkin(Type.MOBA, ShopMorphType.REVOLUTIONARY, rarity, 1); + + addAllMOBASkins(rarity); } public void addLegendary() @@ -1029,6 +1035,9 @@ public class RewardManager addGadget(Type.MOBA, getGadget(MorphRowena.class), rarity, 1); addGadget(Type.MOBA, getGadget(MorphLarissa.class), rarity, 1); addGadget(Type.MOBA, getGadget(MorphBiff.class), rarity, 1); + addGadget(Type.MOBA, getGadget(MorphIvy.class), rarity, 1); + + addAllMOBASkins(rarity); } public UnknownPackageReward addMount(Type type, Mount mount, RewardRarity rarity, int weight) @@ -1114,6 +1123,27 @@ public class RewardManager return addGadget(type, gadget, gadget.getDisplayName() + " (Minestrike Weapon Skin)", rarity, weight, shards); } + private void addAllMOBASkins(RewardRarity rarity) + { + HeroSkinGadget.getSkins().forEach((name, dataList) -> + { + if (name.equals("Bardolf-Werewolf")) + { + return; + } + + dataList.forEach(data -> + { + if (data.getRarity() != rarity) + { + return; + } + + addMOBASkin(Type.MOBA, data.getGadget(), rarity, 1); + }); + }); + } + public UnknownPackageReward addMOBASkin(Type type, HeroSkinGadget gadget, RewardRarity rarity, int weight) { return addMOBASkin(type, gadget, rarity, weight, getShards(rarity)); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java index 5e62bd531..c5be5341a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/reward/RewardType.java @@ -23,7 +23,7 @@ public enum RewardType VALENTINES_GIFT( 0, 7, 20, 20), ST_PATRICKS( 0, 6, 18, 0), SPRING( 0, 6, 18, 0), - MOBA( 0, 5, 25, 40), + MOBA( 0, 5, 20, 30), SPINNER_FILLER( 0.1, 1, 4, 20), SPINNER_REAL( 0.000001, 0.05, 0.4, 5); diff --git a/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/award/CastleSiegeTesterTrack.java b/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/award/CastleSiegeTesterTrack.java index d71ecf911..32ce747d0 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/award/CastleSiegeTesterTrack.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/titles/tracks/award/CastleSiegeTesterTrack.java @@ -33,7 +33,8 @@ public class CastleSiegeTesterTrack extends Track "7b133339-2e02-48ef-9dd4-692415933dc5", // Kreshyy "4e941b23-6e36-48cb-97c4-24f56ea128c1", // DooDooBug25 "0a4b6d83-8eb0-46aa-bc0f-9b7f04046d52", // Livicus - "4f8f5380-ffe1-418d-97a4-0737c6edf352" // Hils + "4f8f5380-ffe1-418d-97a4-0737c6edf352", // Hils + "e873e1c7-8e7d-4489-84e1-74b86e1b4ba7" // Dutty ); public CastleSiegeTesterTrack() diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java index ba68687a1..668a12f78 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/TreasureType.java @@ -39,7 +39,7 @@ public enum TreasureType SPRING(C.cGreen + "Spring Treasure", "Spring Chest", "SpringChest", RewardType.SPRING, Material.CHEST, TreasureStyle.SPRING, RewardPool.Type.SPRING, true, 20000), - MOBA(C.cAqua + "Heroes of GWEN Treasure", "HOG Chest", "HOGChest", RewardType.MOBA, Material.ENDER_CHEST, TreasureStyle.MOBA, RewardPool.Type.MOBA, false, -1), + MOBA(C.cAqua + "Heroes of GWEN Treasure", "HOG Chest", "HOGChest", RewardType.MOBA, Material.ENDER_CHEST, TreasureStyle.MOBA, RewardPool.Type.MOBA, true, 12000), ; private final String _name; diff --git a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java index 652ca842f..f5cc4df8a 100644 --- a/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java +++ b/Plugins/Mineplex.Core/src/mineplex/core/treasure/gui/TreasurePage.java @@ -504,7 +504,9 @@ public class TreasurePage extends ShopPageBase } else { - mobaLore.add(C.cAqua + "Earn HOG Chests by leveling up Roles with in Heroes of GWEN."); + mobaLore.add(ChatColor.RESET + "Click to craft for " + C.cAqua + TreasureType.MOBA.getPurchasePrice() + " Treasure Shards"); + mobaLore.add(" "); + mobaLore.add(C.cAqua + "or Earn HOG Chests by leveling up Roles with in Heroes of GWEN."); } ShopItem shards = new ShopItem(Material.PRISMARINE_SHARD, C.cAqua + C.Bold + treasureShards + " Treasure Shards", shardLore.toArray(new String[0]), 0, false); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java index bd832a5a7..6856d6a1e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/ArcadeManager.java @@ -179,9 +179,6 @@ public class ArcadeManager extends MiniPlugin implements IRelation KIT_UNLOCK_COMMAND, TAUNT_COMMAND, GAME_COMMAND, - SET_GAME_COMMAND, - START_GAME_COMMAND, - STOP_GAME_COMMAND, AUTO_OP, KIT_ACCESS, FEATURED_SERVER, @@ -627,19 +624,10 @@ public class ArcadeManager extends MiniPlugin implements IRelation PermissionGroup.CONTENT.setPermission(Perm.KIT_UNLOCK_COMMAND, true, true); PermissionGroup.PLAYER.setPermission(Perm.TAUNT_COMMAND, true, true); PermissionGroup.ADMIN.setPermission(Perm.GAME_COMMAND, true, true); - PermissionGroup.ADMIN.setPermission(Perm.SET_GAME_COMMAND, true, true); - PermissionGroup.ADMIN.setPermission(Perm.START_GAME_COMMAND, true, true); - PermissionGroup.ADMIN.setPermission(Perm.STOP_GAME_COMMAND, true, true); if (UtilServer.isTestServer()) { PermissionGroup.QA.setPermission(Perm.GAME_COMMAND, true, true); - PermissionGroup.QA.setPermission(Perm.SET_GAME_COMMAND, true, true); - PermissionGroup.QA.setPermission(Perm.START_GAME_COMMAND, true, true); - PermissionGroup.QA.setPermission(Perm.STOP_GAME_COMMAND, true, true); PermissionGroup.MAPLEAD.setPermission(Perm.GAME_COMMAND, false, true); - PermissionGroup.MAPLEAD.setPermission(Perm.SET_GAME_COMMAND, false, true); - PermissionGroup.MAPLEAD.setPermission(Perm.START_GAME_COMMAND, false, true); - PermissionGroup.MAPLEAD.setPermission(Perm.STOP_GAME_COMMAND, false, true); } if (UtilServer.isTestServer() || UtilServer.isDevServer()) { @@ -925,6 +913,17 @@ public class ArcadeManager extends MiniPlugin implements IRelation return true; } + public boolean canPlayerUseGameCmd(Player player) + { + if (!GetClients().Get(player).hasPermission(Perm.GAME_COMMAND) && !(_gameHostManager.isEventServer() && _gameHostManager.isAdmin(player, false))) + { + player.sendMessage(F.main("Game", "You are not allowed to use game commands.")); + return false; + } + + return true; + } + @EventHandler public void StaffIncognito(IncognitoStatusChangeEvent event) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java index d1fde493e..c75e46ec9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/GameCommand.java @@ -3,6 +3,8 @@ package nautilus.game.arcade.command; import org.bukkit.ChatColor; import org.bukkit.entity.Player; +import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.command.MultiCommandBase; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; @@ -14,21 +16,31 @@ import static nautilus.game.arcade.command.SetCommand.SOURCE_PREFIX; public class GameCommand extends MultiCommandBase { + public enum Perm implements Permission + { + GAME_COMMAND_DUMMY_PERM, + } + public GameCommand(ArcadeManager plugin) { - super(plugin, ArcadeManager.Perm.GAME_COMMAND, "game"); + super(plugin, Perm.GAME_COMMAND_DUMMY_PERM, "game"); AddCommand(new StartCommand(Plugin)); AddCommand(new StopCommand(Plugin)); AddCommand(new SetCommand(Plugin)); + + PermissionGroup.PLAYER.setPermission(Perm.GAME_COMMAND_DUMMY_PERM, true, true); } @Override protected void Help(Player caller, String[] args) { - UtilPlayer.message(caller, F.main("Game", "Available Commands")); - UtilPlayer.message(caller, F.help("/game start", "Start the current game", ChatColor.DARK_RED)); - UtilPlayer.message(caller, F.help("/game stop", "Stop the current game", ChatColor.DARK_RED)); - caller.sendMessage(F.help(String.format("/game set [%s(gamemode)] [%s(mapsource)] [%s(mapname)]", MODE_PREFIX, SOURCE_PREFIX, MAP_PREFIX), "Set the current game or next game", ChatColor.DARK_RED)); + if (!Plugin.canPlayerUseGameCmd(caller)) + { + UtilPlayer.message(caller, F.main("Game", "Available Commands")); + UtilPlayer.message(caller, F.help("/game start", "Start the current game", ChatColor.DARK_RED)); + UtilPlayer.message(caller, F.help("/game stop", "Stop the current game", ChatColor.DARK_RED)); + caller.sendMessage(F.help(String.format("/game set [%s(gamemode)] [%s(mapsource)] [%s(mapname)]", MODE_PREFIX, SOURCE_PREFIX, MAP_PREFIX), "Set the current game or next game", ChatColor.DARK_RED)); + } } } \ No newline at end of file diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java index 7bc228eeb..fe716f1c9 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/SetCommand.java @@ -26,12 +26,17 @@ public class SetCommand extends CommandBase public SetCommand(ArcadeManager plugin) { - super(plugin, ArcadeManager.Perm.SET_GAME_COMMAND, "set"); + super(plugin, GameCommand.Perm.GAME_COMMAND_DUMMY_PERM, "set"); } @Override public void Execute(Player caller, String[] args) { + if (!Plugin.canPlayerUseGameCmd(caller)) + { + return; + } + if (Plugin.GetGame() == null) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java index 9ae7feb17..dab44fb83 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StartCommand.java @@ -13,12 +13,17 @@ public class StartCommand extends CommandBase { public StartCommand(ArcadeManager plugin) { - super(plugin, ArcadeManager.Perm.START_GAME_COMMAND, "start"); + super(plugin, GameCommand.Perm.GAME_COMMAND_DUMMY_PERM, "start"); } @Override public void Execute(Player caller, String[] args) { + if (!Plugin.canPlayerUseGameCmd(caller)) + { + return; + } + if (Plugin.GetGame() == null || Plugin.GetGame().GetState() == GameState.Loading) { UtilPlayer.message(caller, F.main("Game", "The game is currently loading, it cannot be started!")); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StopCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StopCommand.java index 333693168..e4af7ab35 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StopCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/command/StopCommand.java @@ -14,12 +14,17 @@ public class StopCommand extends CommandBase { public StopCommand(ArcadeManager plugin) { - super(plugin, ArcadeManager.Perm.STOP_GAME_COMMAND, "stop"); + super(plugin, GameCommand.Perm.GAME_COMMAND_DUMMY_PERM, "stop"); } @Override public void Execute(Player caller, String[] args) { + if (!Plugin.canPlayerUseGameCmd(caller)) + { + return; + } + if (Plugin.GetGame() == null) { UtilPlayer.message(caller, F.main("Game", "There is no game to stop!")); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/DebugCommand.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/DebugCommand.java index 84d6aa518..dcc19814f 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/DebugCommand.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/DebugCommand.java @@ -5,7 +5,6 @@ import org.bukkit.entity.Player; import mineplex.core.Managers; import mineplex.core.account.permissions.Permission; import mineplex.core.command.CommandBase; - import nautilus.game.arcade.ArcadeManager; public class DebugCommand extends CommandBase diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java index bd7caafef..9f4aa4ef2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/Game.java @@ -537,9 +537,13 @@ public abstract class Game extends ListenerComponent implements Lifetimed } } - public & Permission> void registerDebugCommand(String commandName, T permission, DebugCommandExecutor executor) + public & Permission> void registerDebugCommand(String commandName, T permission, PermissionGroup defaultRank, DebugCommandExecutor executor) { DebugCommand command = new DebugCommand(commandName, permission, executor); + if (defaultRank != null) + { + defaultRank.setPermission(permission, true, true); + } if (UtilServer.isTestServer()) { PermissionGroup.QA.setPermission(permission, true, true); @@ -2418,6 +2422,7 @@ public abstract class Game extends ListenerComponent implements Lifetimed cleanupModules(); cleanupCommands(); Managers.get(AntiHack.class).resetIgnoredChecks(); + Managers.get(AntiHack.class).setStrict(false); getLifetime().end(); getStatTrackers().forEach(HandlerList::unregisterAll); getQuestTrackers().forEach(HandlerList::unregisterAll); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/baconbrawl/BaconBrawl.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/baconbrawl/BaconBrawl.java index d6574a600..681a0b409 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/baconbrawl/BaconBrawl.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/baconbrawl/BaconBrawl.java @@ -8,6 +8,7 @@ import mineplex.core.common.util.UtilPlayer; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.damage.CustomDamageEvent; + import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.game.SoloGame; @@ -55,6 +56,8 @@ public class BaconBrawl extends SoloGame .setGiveCompassToSpecs(true) .setGiveCompassToAlive(false) .register(this); + + StrictAntiHack = true; } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java index 0defbd396..831f41ecc 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/bridge/Bridge.java @@ -46,6 +46,7 @@ import org.bukkit.metadata.FixedMetadataValue; import org.bukkit.util.Vector; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.NautHashMap; @@ -274,13 +275,13 @@ public class Bridge extends TeamGame implements OreObsfucation } } - registerDebugCommand("bridge", Perm.DEBUG_BRIDGE_COMMAND, (caller, args) -> + registerDebugCommand("bridge", Perm.DEBUG_BRIDGE_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { caller.sendMessage(F.main("Debug", "Spawning the bridges.")); _bridgeTime = 3000; }); - registerDebugCommand("bridgeinfo", Perm.DEBUG_BRIDGEINFO_COMMAND, (caller, args) -> + registerDebugCommand("bridgeinfo", Perm.DEBUG_BRIDGEINFO_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { if (_animation == null || !(_animation instanceof CustomBridgeAnimation)) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java index 1a9bb27c5..5c46011e4 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/build/Build.java @@ -198,7 +198,6 @@ public class Build extends Game new ChatStatData("BlocksBroken", "Blocks Broken", true) ); - this.StrictAntiHack = true; this.Damage = false; this.HungerSet = 20; this.HealthSet = 20; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cards/Cards.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cards/Cards.java index f1d583e86..ccd5bbfa3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cards/Cards.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/cards/Cards.java @@ -2,11 +2,19 @@ package nautilus.game.arcade.game.games.cards; import java.util.ArrayList; +import org.bukkit.Location; +import org.bukkit.Material; +import org.bukkit.entity.ItemFrame; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.inventory.ItemStack; + import mineplex.core.common.util.C; import mineplex.core.common.util.NautHashMap; import mineplex.core.common.util.UtilTime; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; + import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; @@ -16,13 +24,6 @@ import nautilus.game.arcade.game.games.cards.kits.KitPlayer; import nautilus.game.arcade.game.modules.compass.CompassModule; import nautilus.game.arcade.kit.Kit; -import org.bukkit.Location; -import org.bukkit.Material; -import org.bukkit.entity.ItemFrame; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.inventory.ItemStack; - public class Cards extends SoloGame { private CardFactory _cardFactory; @@ -61,7 +62,6 @@ public class Cards extends SoloGame "based on the build theme!" }); - this.StrictAntiHack = true; this.Damage = false; this.HungerSet = 20; this.HealthSet = 20; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssault.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssault.java index 79a53146f..5e4a3c0a1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssault.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssault.java @@ -171,7 +171,6 @@ public class CastleAssault extends TeamGame "Chests refill every 2 minutes with potions, golden applegates, fishing rods, and other useful PvP items!" }; - this.StrictAntiHack = true; this.HungerSet = 20; this.DeathOut = false; this.DeathSpectateSecs = 5; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssaultTDM.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssaultTDM.java index e1401ca49..e88701439 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssaultTDM.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/castleassault/CastleAssaultTDM.java @@ -144,7 +144,6 @@ public class CastleAssaultTDM extends TeamGame "Chests refill every 2 minutes with potions, golden applegates, fishing rods, and other useful PvP items!" }; - this.StrictAntiHack = true; this.HungerSet = 20; this.DeathOut = false; this.DeathSpectateSecs = 5; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsCTF.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsCTF.java index 1a28d319c..5417873b0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsCTF.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsCTF.java @@ -1,11 +1,19 @@ package nautilus.game.arcade.game.games.champions; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityShootBowEvent; +import org.bukkit.event.inventory.InventoryType; + import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; + import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.game.GameTeam; @@ -26,13 +34,6 @@ import nautilus.game.arcade.stats.SeismicSlamStatTracker; import nautilus.game.arcade.stats.SpecialWinStatTracker; import nautilus.game.arcade.stats.TheLongestShotStatTracker; -import org.bukkit.Location; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityShootBowEvent; -import org.bukkit.event.inventory.InventoryType; - public class ChampionsCTF extends CaptureTheFlag { public ChampionsCTF(ArcadeManager manager) @@ -65,8 +66,6 @@ public class ChampionsCTF extends CaptureTheFlag Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6); - this.StrictAntiHack = true; - InventoryOpenChest = true; EloStart = 1000; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsDominate.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsDominate.java index bc59c9d56..545d5fe38 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsDominate.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsDominate.java @@ -1,11 +1,18 @@ package nautilus.game.arcade.game.games.champions; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityShootBowEvent; +import org.bukkit.event.inventory.InventoryType; + import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; + import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.game.GameTeam; @@ -21,12 +28,6 @@ import nautilus.game.arcade.stats.ElectrocutionStatTracker; import nautilus.game.arcade.stats.KillReasonStatTracker; import nautilus.game.arcade.stats.SeismicSlamStatTracker; import nautilus.game.arcade.stats.TheLongestShotStatTracker; - -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityShootBowEvent; -import org.bukkit.event.inventory.InventoryType; public class ChampionsDominate extends Domination { @@ -62,8 +63,6 @@ public class ChampionsDominate extends Domination Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6); - this.StrictAntiHack = true; - InventoryOpenChest = true; EloStart = 1000; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsTDM.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsTDM.java index f8d62e341..6441a2136 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsTDM.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/ChampionsTDM.java @@ -1,11 +1,18 @@ package nautilus.game.arcade.game.games.champions; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.EventPriority; +import org.bukkit.event.entity.EntityShootBowEvent; +import org.bukkit.event.inventory.InventoryType; + import mineplex.core.common.util.F; import mineplex.core.common.util.UtilPlayer; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; import mineplex.minecraft.game.core.combat.DeathMessageType; import mineplex.minecraft.game.core.damage.CustomDamageEvent; + import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.GameType; import nautilus.game.arcade.game.GameTeam; @@ -23,12 +30,6 @@ import nautilus.game.arcade.stats.SeismicSlamStatTracker; import nautilus.game.arcade.stats.TheLongestShotStatTracker; import nautilus.game.arcade.stats.WinWithoutLosingTeammateStatTracker; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.EventPriority; -import org.bukkit.event.entity.EntityShootBowEvent; -import org.bukkit.event.inventory.InventoryType; - public class ChampionsTDM extends TeamDeathmatch { public ChampionsTDM(ArcadeManager manager) @@ -62,8 +63,6 @@ public class ChampionsTDM extends TeamDeathmatch Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6); - this.StrictAntiHack = true; - InventoryOpenChest = true; this.DisableKillCommand = false; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/modes/SmashDom.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/modes/SmashDom.java index f5825a5fe..a5a158191 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/modes/SmashDom.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/champions/modes/SmashDom.java @@ -73,8 +73,6 @@ public class SmashDom extends Domination Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6); Manager.getClassManager().deregisterSelf(); - StrictAntiHack = true; - InventoryOpenChest = true; EnableSupply = false; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java index 8a9272463..aa4e02353 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/dragonescape/DragonEscape.java @@ -153,6 +153,8 @@ public class DragonEscape extends SoloGame .setGiveCompassToSpecs(true) .setGiveCompassToAlive(false) .register(this); + + StrictAntiHack = true; } @Override diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java index fd362ef5a..f046879d3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/event/EventModule.java @@ -108,7 +108,7 @@ public class EventModule extends MiniPlugin PermissionGroup.ADMIN.setPermission(Perm.SET_HOST_COMMAND, true, true); if (_plugin.getConfig().getString("serverstatus.name").equals("SMTestServer-1")) { - PermissionGroup.QA.setPermission(Perm.SET_HOST_COMMAND, true, true); + PermissionGroup.SRMOD.setPermission(Perm.SET_HOST_COMMAND, true, true); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java index d3055e8de..afa1233f6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/evolution/Evolution.java @@ -1,38 +1,12 @@ package nautilus.game.arcade.game.games.evolution; -import com.google.common.collect.Maps; -import mineplex.core.common.Pair; -import mineplex.core.common.util.*; -import mineplex.core.common.util.UtilEvent.ActionType; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.recharge.Recharge; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.minecraft.game.core.combat.CombatComponent; -import mineplex.minecraft.game.core.combat.CombatManager.AttackReason; -import mineplex.minecraft.game.core.combat.DeathMessageType; -import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; -import mineplex.minecraft.game.core.condition.Condition.ConditionType; -import mineplex.minecraft.game.core.condition.ConditionActive; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.GameType; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.SoloGame; -import nautilus.game.arcade.game.games.evolution.events.*; -import nautilus.game.arcade.game.games.evolution.evolve.EvolveManager; -import nautilus.game.arcade.game.games.evolution.kits.KitAbility; -import nautilus.game.arcade.game.games.evolution.kits.KitEvolveSpeed; -import nautilus.game.arcade.game.games.evolution.kits.KitHealth; -import nautilus.game.arcade.game.games.evolution.mobs.*; -import nautilus.game.arcade.game.games.evolution.trackers.*; -import nautilus.game.arcade.game.modules.compass.CompassModule; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.kit.ProgressingKit; -import nautilus.game.arcade.stats.KillFastStatTracker; +import java.util.AbstractMap.SimpleEntry; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.Iterator; +import java.util.List; + import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -49,8 +23,61 @@ import org.bukkit.event.player.PlayerItemHeldEvent; import org.bukkit.event.player.PlayerQuitEvent; import org.bukkit.util.Vector; -import java.util.AbstractMap.SimpleEntry; -import java.util.*; +import mineplex.core.common.Pair; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.NautHashMap; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTextMiddle; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.minecraft.game.core.combat.CombatComponent; +import mineplex.minecraft.game.core.combat.CombatManager.AttackReason; +import mineplex.minecraft.game.core.combat.DeathMessageType; +import mineplex.minecraft.game.core.combat.event.CombatDeathEvent; +import mineplex.minecraft.game.core.condition.Condition.ConditionType; +import mineplex.minecraft.game.core.condition.ConditionActive; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; + +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; +import nautilus.game.arcade.game.GameTeam; +import nautilus.game.arcade.game.SoloGame; +import nautilus.game.arcade.game.games.evolution.events.EvolutionAbilityUseEvent; +import nautilus.game.arcade.game.games.evolution.events.EvolutionAttemptingTickEvent; +import nautilus.game.arcade.game.games.evolution.events.EvolutionBeginEvent; +import nautilus.game.arcade.game.games.evolution.events.EvolutionEndEvent; +import nautilus.game.arcade.game.games.evolution.events.EvolutionPostEvolveEvent; +import nautilus.game.arcade.game.games.evolution.evolve.EvolveManager; +import nautilus.game.arcade.game.games.evolution.kits.KitAbility; +import nautilus.game.arcade.game.games.evolution.kits.KitEvolveSpeed; +import nautilus.game.arcade.game.games.evolution.kits.KitHealth; +import nautilus.game.arcade.game.games.evolution.mobs.KitBlaze; +import nautilus.game.arcade.game.games.evolution.mobs.KitChicken; +import nautilus.game.arcade.game.games.evolution.mobs.KitCreeper; +import nautilus.game.arcade.game.games.evolution.mobs.KitGolem; +import nautilus.game.arcade.game.games.evolution.mobs.KitSlime; +import nautilus.game.arcade.game.games.evolution.mobs.KitSpider; +import nautilus.game.arcade.game.games.evolution.trackers.EvoWinWithoutDyingTracker; +import nautilus.game.arcade.game.games.evolution.trackers.KillsWhileEvolvingTracker; +import nautilus.game.arcade.game.games.evolution.trackers.NoAbilityTracker; +import nautilus.game.arcade.game.games.evolution.trackers.NoDamageWhileEvolvingTracker; +import nautilus.game.arcade.game.games.evolution.trackers.NoMeleeTracker; +import nautilus.game.arcade.game.modules.compass.CompassModule; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.stats.KillFastStatTracker; public class Evolution extends SoloGame { @@ -152,6 +179,8 @@ public class Evolution extends SoloGame DamageDealt, DamageTaken ); + + StrictAntiHack = true; } public EvolveManager getEvolve() diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/modes/ChampionsGladiators.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/modes/ChampionsGladiators.java index d7af66dea..95ae1feb4 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/modes/ChampionsGladiators.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/gladiators/modes/ChampionsGladiators.java @@ -46,8 +46,6 @@ public class ChampionsGladiators extends Gladiators Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6); - StrictAntiHack = true; - new ChampionsFixes(this); manager.enableChampionsModules(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java index 18239c0dd..76fc4da6c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/hideseek/HideSeek.java @@ -1,64 +1,17 @@ package nautilus.game.arcade.game.games.hideseek; -import mineplex.core.common.util.C; -import mineplex.core.common.util.F; -import mineplex.core.common.util.UtilAlg; -import mineplex.core.common.util.UtilBlock; -import mineplex.core.common.util.UtilEnt; -import mineplex.core.common.util.UtilEvent; -import mineplex.core.common.util.UtilEvent.ActionType; -import mineplex.core.common.util.UtilFirework; -import mineplex.core.common.util.UtilGear; -import mineplex.core.common.util.UtilInv; -import mineplex.core.common.util.UtilMath; -import mineplex.core.common.util.UtilParticle; -import mineplex.core.common.util.UtilParticle.ParticleType; -import mineplex.core.common.util.UtilParticle.ViewDist; -import mineplex.core.common.util.UtilPlayer; -import mineplex.core.common.util.UtilServer; -import mineplex.core.common.util.UtilTime; -import mineplex.core.disguise.disguises.DisguiseBase; -import mineplex.core.itemstack.ItemStackFactory; -import mineplex.core.packethandler.IPacketHandler; -import mineplex.core.packethandler.PacketInfo; -import mineplex.core.recharge.Recharge; -import mineplex.core.updater.UpdateType; -import mineplex.core.updater.event.UpdateEvent; -import mineplex.core.visibility.VisibilityManager; -import mineplex.minecraft.game.core.combat.DeathMessageType; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.ArcadeManager; -import nautilus.game.arcade.GameType; -import nautilus.game.arcade.events.GameStateChangeEvent; -import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; -import nautilus.game.arcade.game.GameTeam; -import nautilus.game.arcade.game.GameTeam.PlayerState; -import nautilus.game.arcade.game.TeamGame; -import nautilus.game.arcade.game.games.hideseek.forms.BlockForm; -import nautilus.game.arcade.game.games.hideseek.forms.CreatureForm; -import nautilus.game.arcade.game.games.hideseek.forms.Form; -import nautilus.game.arcade.game.games.hideseek.forms.InfestedData; -import nautilus.game.arcade.game.games.hideseek.kits.KitHider; -import nautilus.game.arcade.game.games.hideseek.kits.KitHiderInfestor; -import nautilus.game.arcade.game.games.hideseek.kits.KitHiderQuick; -import nautilus.game.arcade.game.games.hideseek.kits.KitHiderShocker; -import nautilus.game.arcade.game.games.hideseek.kits.KitHiderSwapper; -import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerLeaper; -import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerRadar; -import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerTNT; -import nautilus.game.arcade.game.games.hideseek.quests.DisguiseQuestTracker; -import nautilus.game.arcade.game.modules.compass.CompassModule; -import nautilus.game.arcade.kit.Kit; -import nautilus.game.arcade.kit.NullKit; -import nautilus.game.arcade.stats.BadHiderStatTracker; -import nautilus.game.arcade.stats.HunterKillerStatTracker; -import nautilus.game.arcade.stats.HunterOfTheYearStatTracker; -import nautilus.game.arcade.stats.MeowStatTracker; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.HashSet; +import java.util.Iterator; +import java.util.Map.Entry; + import net.minecraft.server.v1_8_R3.EntityCreature; import net.minecraft.server.v1_8_R3.NavigationAbstract; import net.minecraft.server.v1_8_R3.PacketPlayInUseEntity; import net.minecraft.server.v1_8_R3.PacketPlayOutEntityDestroy; import net.minecraft.server.v1_8_R3.PacketPlayOutSpawnEntityLiving; + import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.Color; @@ -105,11 +58,61 @@ import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.FireworkMeta; import org.bukkit.util.Vector; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.Map.Entry; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilAlg; +import mineplex.core.common.util.UtilBlock; +import mineplex.core.common.util.UtilEnt; +import mineplex.core.common.util.UtilEvent; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.common.util.UtilFirework; +import mineplex.core.common.util.UtilGear; +import mineplex.core.common.util.UtilInv; +import mineplex.core.common.util.UtilMath; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilPlayer; +import mineplex.core.common.util.UtilServer; +import mineplex.core.common.util.UtilTime; +import mineplex.core.disguise.disguises.DisguiseBase; +import mineplex.core.itemstack.ItemStackFactory; +import mineplex.core.packethandler.IPacketHandler; +import mineplex.core.packethandler.PacketInfo; +import mineplex.core.recharge.Recharge; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; +import mineplex.core.visibility.VisibilityManager; +import mineplex.minecraft.game.core.combat.DeathMessageType; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; + +import nautilus.game.arcade.ArcadeManager; +import nautilus.game.arcade.GameType; +import nautilus.game.arcade.events.GameStateChangeEvent; +import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; +import nautilus.game.arcade.game.GameTeam; +import nautilus.game.arcade.game.GameTeam.PlayerState; +import nautilus.game.arcade.game.TeamGame; +import nautilus.game.arcade.game.games.hideseek.forms.BlockForm; +import nautilus.game.arcade.game.games.hideseek.forms.CreatureForm; +import nautilus.game.arcade.game.games.hideseek.forms.Form; +import nautilus.game.arcade.game.games.hideseek.forms.InfestedData; +import nautilus.game.arcade.game.games.hideseek.kits.KitHider; +import nautilus.game.arcade.game.games.hideseek.kits.KitHiderInfestor; +import nautilus.game.arcade.game.games.hideseek.kits.KitHiderQuick; +import nautilus.game.arcade.game.games.hideseek.kits.KitHiderShocker; +import nautilus.game.arcade.game.games.hideseek.kits.KitHiderSwapper; +import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerLeaper; +import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerRadar; +import nautilus.game.arcade.game.games.hideseek.kits.KitSeekerTNT; +import nautilus.game.arcade.game.games.hideseek.quests.DisguiseQuestTracker; +import nautilus.game.arcade.game.modules.compass.CompassModule; +import nautilus.game.arcade.kit.Kit; +import nautilus.game.arcade.kit.NullKit; +import nautilus.game.arcade.stats.BadHiderStatTracker; +import nautilus.game.arcade.stats.HunterKillerStatTracker; +import nautilus.game.arcade.stats.HunterOfTheYearStatTracker; +import nautilus.game.arcade.stats.MeowStatTracker; @SuppressWarnings("deprecation") public class HideSeek extends TeamGame @@ -361,6 +364,8 @@ public class HideSeek extends TeamGame .setGiveCompassToSpecs(true) .setGiveCompassToAlive(false) .register(this); + + StrictAntiHack = true; } @EventHandler diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/modes/TinyWinners.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/modes/TinyWinners.java index 9e66f6631..05be95829 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/modes/TinyWinners.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/micro/modes/TinyWinners.java @@ -41,7 +41,6 @@ public class TinyWinners extends Micro Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6); - StrictAntiHack = true; getModule(TeamArmorModule.class) .dontGiveTeamArmor(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeArrowRampage.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeArrowRampage.java index 08df13ac4..e9e8004fd 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeArrowRampage.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeArrowRampage.java @@ -124,8 +124,6 @@ public class ChallengeArrowRampage extends Challenge @Override public void onStart() { - Host.StrictAntiHack = false; - ItemStack bow = new ItemBuilder(Material.BOW) .setUnbreakable(true) .addEnchantment(Enchantment.ARROW_INFINITE, 1) @@ -141,7 +139,6 @@ public class ChallengeArrowRampage extends Challenge @Override public void onEnd() { - Host.StrictAntiHack = true; remove(EntityType.FALLING_BLOCK); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeBouncingBlock.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeBouncingBlock.java index 0b463033a..bed12fcf8 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeBouncingBlock.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/mineware/challenge/type/ChallengeBouncingBlock.java @@ -119,8 +119,6 @@ public class ChallengeBouncingBlock extends Challenge implements LogicTracker @Override public void onStart() { - Host.StrictAntiHack = false; - addEffect(PotionEffectType.JUMP, JUMP_EFFECT_MULTIPLIER); for (Player player : getPlayersAlive()) @@ -132,8 +130,6 @@ public class ChallengeBouncingBlock extends Challenge implements LogicTracker @Override public void onEnd() { - Host.StrictAntiHack = true; - _stepTracker.clear(); for (Block woolBlock : _blocks) diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/Moba.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/Moba.java index 38b2fb7f7..7577b2655 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/Moba.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/Moba.java @@ -27,6 +27,7 @@ import com.mineplex.anticheat.checks.move.Speed; import mineplex.core.Managers; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.antihack.AntiHack; import mineplex.core.common.Pair; import mineplex.core.common.util.F; @@ -91,16 +92,17 @@ public class Moba extends TeamGame } private static final String[] ITEM_IMAGES = - { - "Anath_the_Burnt.png", - "Bardolf.png", - "Biff.png", - "Dana.png", - "Devon.png", - "Hattori.png", - "Larissa.png", - "Rowena.png" - }; + { + "Ivy.png", + "Anath_the_Burnt.png", + "Bardolf.png", + "Biff.png", + "Dana.png", + "Devon.png", + "Hattori.png", + "Larissa.png", + "Rowena.png" + }; private final HeroKit[] _kits; @@ -173,7 +175,7 @@ public class Moba extends TeamGame .setGiveCompassToAlive(false) .register(this); - registerDebugCommand("kit", Perm.DEBUG_KIT_COMMAND, (caller, args) -> + registerDebugCommand("kit", Perm.DEBUG_KIT_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { StringBuilder builder = new StringBuilder(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/buff/buffs/BuffCrippled.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/buff/buffs/BuffCrippled.java new file mode 100644 index 000000000..4dc239255 --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/buff/buffs/BuffCrippled.java @@ -0,0 +1,73 @@ +package nautilus.game.arcade.game.games.moba.buff.buffs; + +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + +import mineplex.core.common.events.EntityVelocityChangeEvent; +import mineplex.core.common.util.C; +import mineplex.core.common.util.F; +import mineplex.core.common.util.UtilParticle; +import mineplex.core.common.util.UtilParticle.ParticleType; +import mineplex.core.common.util.UtilParticle.ViewDist; +import mineplex.core.common.util.UtilTextMiddle; +import mineplex.core.updater.UpdateType; +import mineplex.core.updater.event.UpdateEvent; + +import nautilus.game.arcade.game.games.moba.Moba; +import nautilus.game.arcade.game.games.moba.buff.Buff; +import nautilus.game.arcade.game.games.moba.kit.HeroSkillUseEvent; + +public class BuffCrippled extends Buff +{ + + public BuffCrippled(Moba host, Player entity, long duration) + { + super(host, entity, duration); + } + + @Override + public void onApply() + { + _entity.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, (int) (_duration / 50D), 1)); + UtilTextMiddle.display("", C.cRed + "Crippled", 10, 20, 10, (Player) _entity); + } + + @Override + public void onExpire() + { + } + + @EventHandler + public void update(UpdateEvent event) + { + if (event.getType() != UpdateType.FASTEST) + { + return; + } + + UtilParticle.PlayParticleToAll(ParticleType.PORTAL, _entity.getLocation().add(0, 1, 0), 0.5F, 0.2F, 0.5F, 0.1F, 5, ViewDist.LONG); + } + + @EventHandler + public void velocityApply(EntityVelocityChangeEvent event) + { + if (event.getEntity().equals(_entity)) + { + event.setCancelled(true); + } + } + + @EventHandler + public void useMovementSkill(HeroSkillUseEvent event) + { + Player player = event.getPlayer(); + + if (player.equals(_entity) && event.getSkill().isSneakActivate()) + { + player.sendMessage(F.main("Game", "You cannot use movement abilities while " + F.name("Crippled") + ".")); + event.setCancelled(true); + } + } +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/buff/buffs/BuffRooting.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/buff/buffs/BuffRooting.java index 8c4e862dc..988dc8089 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/buff/buffs/BuffRooting.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/buff/buffs/BuffRooting.java @@ -1,7 +1,13 @@ package nautilus.game.arcade.game.games.moba.buff.buffs; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.potion.PotionEffect; +import org.bukkit.potion.PotionEffectType; + import mineplex.core.common.events.EntityVelocityChangeEvent; import mineplex.core.common.util.C; +import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; import mineplex.core.common.util.UtilParticle; import mineplex.core.common.util.UtilParticle.ParticleType; @@ -9,12 +15,10 @@ import mineplex.core.common.util.UtilParticle.ViewDist; import mineplex.core.common.util.UtilTextMiddle; import mineplex.core.updater.UpdateType; import mineplex.core.updater.event.UpdateEvent; + import nautilus.game.arcade.game.games.moba.Moba; import nautilus.game.arcade.game.games.moba.buff.Buff; -import org.bukkit.Location; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.player.PlayerMoveEvent; +import nautilus.game.arcade.game.games.moba.kit.HeroSkillUseEvent; public class BuffRooting extends Buff { @@ -28,6 +32,7 @@ public class BuffRooting extends Buff public void onApply() { UtilAction.zeroVelocity(_entity); + _entity.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, Integer.MAX_VALUE, 3)); UtilTextMiddle.display("", C.cRed + "Rooted", 10, 20, 10, (Player) _entity); } @@ -45,7 +50,7 @@ public class BuffRooting extends Buff return; } - UtilParticle.PlayParticleToAll(ParticleType.HAPPY_VILLAGER, _entity.getLocation().add(0, 0.5, 0), 0.5F, 0.2F, 0.5F, 0.1F, 5, ViewDist.LONG); + UtilParticle.PlayParticleToAll(ParticleType.HAPPY_VILLAGER, _entity.getLocation().add(0, 1, 0), 0.5F, 0.2F, 0.5F, 0.1F, 3, ViewDist.LONG); } @EventHandler @@ -58,21 +63,14 @@ public class BuffRooting extends Buff } @EventHandler - public void move(PlayerMoveEvent event) + public void useMovementSkill(HeroSkillUseEvent event) { - if (!event.getPlayer().equals(_entity)) + Player player = event.getPlayer(); + + if (player.equals(_entity) && event.getSkill().isSneakActivate()) { - return; + player.sendMessage(F.main("Game", "You cannot use movement abilities while " + F.name("Rooted") + ".")); + event.setCancelled(true); } - - Location from = event.getFrom(); - Location to = event.getTo(); - - if (from.getX() == to.getX() && from.getZ() == to.getZ()) - { - return; - } - - event.setTo(from); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/gold/GoldManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/gold/GoldManager.java index 5487ae0df..d5da49682 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/gold/GoldManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/gold/GoldManager.java @@ -9,6 +9,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerQuitEvent; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.updater.UpdateType; @@ -44,7 +45,7 @@ public class GoldManager implements Listener _playerGold = new HashMap<>(); - host.registerDebugCommand("gold", Perm.DEBUG_GOLD_COMMAND, (caller, args) -> + host.registerDebugCommand("gold", Perm.DEBUG_GOLD_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { if (args.length < 1) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/HeroSkill.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/HeroSkill.java index f7b7aadcf..ed28c835c 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/HeroSkill.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/HeroSkill.java @@ -188,12 +188,12 @@ public class HeroSkill extends Perk if (itemStack.isSimilar(_item)) { - if (_dropItemActivate && !Recharge.Instance.use(player, "Ultimate", _cooldown, false, false)) + if (_dropItemActivate && !Recharge.Instance.use(player, "Ultimate", _cooldown - 250, false, false)) { return false; } - return true; + return !callEvent(player); } return false; @@ -209,13 +209,20 @@ public class HeroSkill extends Perk Player player = event.getPlayer(); ItemStack itemStack = player.getInventory().getItem(_slot); - if (!hasPerk(player) || UtilPlayer.isSpectator(player) || itemStack == null) + if (!hasPerk(player) || UtilPlayer.isSpectator(player) || itemStack == null || !itemStack.isSimilar(_item)) { return false; } - return itemStack.isSimilar(_item); + return !callEvent(player); + } + private boolean callEvent(Player player) + { + HeroSkillUseEvent event = new HeroSkillUseEvent(player, this); + UtilServer.CallEvent(event); + + return event.isCancelled(); } @EventHandler @@ -411,4 +418,9 @@ public class HeroSkill extends Perk { return _lastSkill.containsKey(player.getUniqueId()); } + + public boolean isSneakActivate() + { + return _sneakActivate; + } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/HeroSkillUseEvent.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/HeroSkillUseEvent.java new file mode 100644 index 000000000..f8b7f2edc --- /dev/null +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/HeroSkillUseEvent.java @@ -0,0 +1,51 @@ +package nautilus.game.arcade.game.games.moba.kit; + +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.HandlerList; +import org.bukkit.event.player.PlayerEvent; + +public class HeroSkillUseEvent extends PlayerEvent implements Cancellable +{ + + private static final HandlerList _handlers = new HandlerList(); + + private HeroSkill _skill; + private boolean _cancelled; + + public HeroSkillUseEvent(Player who, HeroSkill skill) + { + super(who); + + _skill = skill; + } + + public HeroSkill getSkill() + { + return _skill; + } + + @Override + public void setCancelled(boolean cancelled) + { + _cancelled = cancelled; + } + + @Override + public boolean isCancelled() + { + return _cancelled; + } + + public static HandlerList getHandlerList() + { + return _handlers; + } + + @Override + public HandlerList getHandlers() + { + return getHandlerList(); + } + +} diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/bardolf/SkillFullMoon.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/bardolf/SkillFullMoon.java index e2cf73353..f668105e6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/bardolf/SkillFullMoon.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/bardolf/SkillFullMoon.java @@ -1,10 +1,10 @@ package nautilus.game.arcade.game.games.moba.kit.bardolf; -import mineplex.core.common.skin.SkinData; -import mineplex.core.common.util.UtilEvent.ActionType; -import mineplex.minecraft.game.core.damage.CustomDamageEvent; -import nautilus.game.arcade.game.games.moba.kit.HeroSkill; -import nautilus.game.arcade.game.games.moba.kit.bardolf.HeroBardolf.WolfData; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.concurrent.TimeUnit; + import org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.LivingEntity; @@ -14,9 +14,14 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.inventory.ItemStack; -import java.util.HashSet; -import java.util.Set; -import java.util.concurrent.TimeUnit; +import mineplex.core.common.skin.SkinData; +import mineplex.core.common.util.UtilEvent.ActionType; +import mineplex.core.gadget.gadgets.gamemodifiers.moba.skins.HeroSkinGadget; +import mineplex.core.gadget.gadgets.gamemodifiers.moba.skins.HeroSkinGadgetData; +import mineplex.minecraft.game.core.damage.CustomDamageEvent; + +import nautilus.game.arcade.game.games.moba.kit.HeroSkill; +import nautilus.game.arcade.game.games.moba.kit.bardolf.HeroBardolf.WolfData; public class SkillFullMoon extends HeroSkill { @@ -28,6 +33,7 @@ public class SkillFullMoon extends HeroSkill "As wolves die his power decreases.", "All Wolves in the pack die after the ultimate ends" }; + private static final String WEREWOLF_KEY = "Bardolf-Werewolf"; private static final ItemStack SKILL_ITEM = new ItemStack(Material.NETHER_STAR); private static final long DURATION = TimeUnit.SECONDS.toMillis(10); private static final int HEALTH = 20; @@ -64,9 +70,33 @@ public class SkillFullMoon extends HeroSkill _active.add(player); Manager.GetGame().WorldTimeSet = 18000; player.getWorld().strikeLightningEffect(player.getLocation()); - kit.disguise(player, SkinData.BARDOLF_WEREWOLF); data.setUltimate(true); + List werewolfDataList = HeroSkinGadget.getSkins().get(WEREWOLF_KEY); + boolean disguised = false; + for (HeroSkinGadgetData normalData : HeroSkinGadget.getSkins().get(kit.GetName())) + { + if (normalData.getGadget().isActive(player)) + { + for (HeroSkinGadgetData werewolfData : werewolfDataList) + { + if (normalData.getName().equals(werewolfData.getName())) + { + kit.disguise(player, werewolfData.getSkinData()); + disguised = true; + break; + } + } + + break; + } + } + + if (!disguised) + { + kit.disguise(player, SkinData.BARDOLF_WEREWOLF); + } + float speedIncrease = (float) data.getWolves().size() * SPEED_FACTOR; data.setLastSpeedIncrease(speedIncrease); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/HeroIvy.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/HeroIvy.java index 9cda0860d..2f14f0eea 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/HeroIvy.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/HeroIvy.java @@ -20,6 +20,6 @@ public class HeroIvy extends HeroKit public HeroIvy(ArcadeManager manager) { - super(manager, "Ivy", PERKS, MobaRole.WARRIOR, SkinData.SANTA, 20); + super(manager, "Ivy", PERKS, MobaRole.WARRIOR, SkinData.IVY, 20); } } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillBoxingRing.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillBoxingRing.java index 4bba55df7..76ad558ac 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillBoxingRing.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillBoxingRing.java @@ -29,7 +29,7 @@ import mineplex.core.updater.event.UpdateEvent; import nautilus.game.arcade.game.games.moba.Moba; import nautilus.game.arcade.game.games.moba.buff.BuffManager; -import nautilus.game.arcade.game.games.moba.buff.buffs.BuffRooting; +import nautilus.game.arcade.game.games.moba.buff.buffs.BuffCrippled; import nautilus.game.arcade.game.games.moba.kit.HeroSkill; public class SkillBoxingRing extends HeroSkill @@ -68,10 +68,6 @@ public class SkillBoxingRing extends HeroSkill Player player = event.getPlayer(); Location location = player.getLocation().subtract(0, 1, 0); byte colour = (byte) (Manager.GetGame().GetTeam(player).GetColor() == ChatColor.RED ? 14 : 11); -// // Double Plants work by the bottom block having a data value, in this case 4, the top part of the plant has -// // a data value of 8, this tells the client to render the top of the part of the block located below itself. -// byte bottomFlower = 4; -// byte topFlower = 8; location.getWorld().playEffect(location, Effect.STEP_SOUND, Material.STAINED_CLAY, colour); @@ -80,10 +76,6 @@ public class SkillBoxingRing extends HeroSkill Manager.GetBlockRestore().add(block, Material.STAINED_CLAY.getId(), colour, DURATION + UtilMath.rRange(-500, 500)); } -// for (Block block : getSquareBlocks(location, BLOCK_RADIUS, true)) -// { -// Manager.GetBlockRestore().add(block, Material.GRASS.getId(), (byte) 0, DURATION + 500 + UtilMath.r(250)); -// } location.add(0, 1, 0); @@ -91,9 +83,6 @@ public class SkillBoxingRing extends HeroSkill { Manager.GetBlockRestore().add(block, Material.RED_ROSE.getId(), (byte) 0, DURATION + UtilMath.r(500)); block.getWorld().playEffect(block.getLocation().add(0.5, 0.5, 0.5), Effect.STEP_SOUND, Material.RED_ROSE); -// long duration = DURATION + UtilMath.r(250); -// Manager.GetBlockRestore().add(block, Material.DOUBLE_PLANT.getId(), bottomFlower, duration); -// Manager.GetBlockRestore().add(block, Material.DOUBLE_PLANT.getId(), topFlower, duration); } _data.add(new BoxingRingData(player)); @@ -134,7 +123,7 @@ public class SkillBoxingRing extends HeroSkill } else if (Recharge.Instance.use(nearby, GetName() + " Rooting", 2000, false, false)) { - buffManager.apply(new BuffRooting(host, nearby, DEBUFF_DURATION)); + buffManager.apply(new BuffCrippled(host, nearby, DEBUFF_DURATION)); } else if (Recharge.Instance.use(nearby, GetName() + " Damage", 900, false, false)) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillFloralLeap.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillFloralLeap.java index 159e83c8b..60c4ed292 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillFloralLeap.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillFloralLeap.java @@ -57,7 +57,8 @@ public class SkillFloralLeap extends HeroSkill new DustSpellColor(Color.MAGENTA) }; private static final long DURATION = TimeUnit.SECONDS.toMillis(5); - private static final int BLOCK_RADIUS = 5; + private static final int DAMAGE_RADIUS = 5; + private static final int BLOCK_RADIUS = 3; private static final PotionEffect DEBUFF = new PotionEffect(PotionEffectType.SLOW, 50, 2, false, false); private static final int DAMAGE = 2; @@ -143,7 +144,7 @@ public class SkillFloralLeap extends HeroSkill data.LastDamage = System.currentTimeMillis(); - for (LivingEntity nearby : UtilEnt.getInRadius(data.Center, BLOCK_RADIUS).keySet()) + for (LivingEntity nearby : UtilEnt.getInRadius(data.Center, DAMAGE_RADIUS).keySet()) { if (isTeamDamage(player, nearby)) { @@ -201,7 +202,7 @@ public class SkillFloralLeap extends HeroSkill @EventHandler public void blockPhysics(BlockPhysicsEvent event) { - if (event.getChangedType() == Material.LONG_GRASS || event.getChangedType() == Material.RED_ROSE) + if (event.getChangedType() == Material.RED_ROSE) { event.setCancelled(true); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillHook.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillHook.java index b7ef981c2..3cd929ad5 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillHook.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/kit/ivy/SkillHook.java @@ -35,7 +35,7 @@ public class SkillHook extends HeroSkill "and pulling them towards you." }; private static final ItemStack SKILL_ITEM = new ItemStack(Material.VINE); - private static final int RANGE = 7; + private static final int RANGE = 9; private static final int DAMAGE_PLAYER = 4; private static final int DAMAGE_MINION = 6; private static final PotionEffect DEBUFF = new PotionEffect(PotionEffectType.SLOW, 60, 2, false, false); @@ -82,7 +82,7 @@ public class SkillHook extends HeroSkill return true; } - for (int i = 0; i < 4; i++) + for (int i = 0; i < 10; i++) { if (leash.update()) { @@ -91,7 +91,7 @@ public class SkillHook extends HeroSkill if (data.Target == null) { - for (LivingEntity nearby : UtilEnt.getInRadius(leash.getLastLocation().subtract(0, 1.2, 0), 1).keySet()) + for (LivingEntity nearby : UtilEnt.getInRadius(leash.getLastLocation().subtract(0, 1.2, 0), 2).keySet()) { if (isTeamDamage(player, nearby)) { @@ -101,6 +101,7 @@ public class SkillHook extends HeroSkill if (nearby instanceof Player) { data.Target = (Player) nearby; + nearby.addPotionEffect(DEBUFF); UtilAction.zeroVelocity(nearby); Manager.GetDamage().NewDamageEvent(nearby, player, null, DamageCause.CUSTOM, DAMAGE_PLAYER, false, false, false, player.getName(), GetName()); } @@ -122,7 +123,6 @@ public class SkillHook extends HeroSkill if (UtilMath.offset2dSquared(target.getLocation(), player.getLocation()) < 4) { UtilAction.zeroVelocity(target); - target.addPotionEffect(DEBUFF); return true; } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/minion/MinionManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/minion/MinionManager.java index 75217b8c1..be066d671 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/minion/MinionManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/minion/MinionManager.java @@ -15,6 +15,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAlg; @@ -51,7 +52,7 @@ public class MinionManager implements Listener _waves = new HashSet<>(); _enabled = true; - host.registerDebugCommand("removeminions", Perm.DEBUG_REMOVEMINIONS_COMMAND, (caller, args) -> + host.registerDebugCommand("removeminions", Perm.DEBUG_REMOVEMINIONS_COMMAND, PermissionGroup.DEV, (caller, args) -> { for (MinionWave wave : _waves) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/prepare/PrepareSelection.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/prepare/PrepareSelection.java index 03086b5b4..56d652da0 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/prepare/PrepareSelection.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/prepare/PrepareSelection.java @@ -122,26 +122,26 @@ public class PrepareSelection implements Listener, IPacketHandler AtomicInteger i = new AtomicInteger(); GameTeam team = _host.GetTeam(player); Map spawns = _host.getLocationStartsWith("KIT " + team.GetName().toUpperCase()); + Location goBack = spawns.remove("KIT " + team.GetName().toUpperCase() + " GO_BACK"); Location average = UtilAlg.getAverageLocation(team.GetSpawns()); MobaPlayer mobaPlayer = _host.getMobaData(player); List heroKits = _host.getKits(mobaPlayer.getRole()); - Location goBack = spawns.remove("KIT " + team.GetName().toUpperCase() + " GO_BACK"); - ClientArmorStand goBackStand = ClientArmorStand.spawn(goBack.clone().add(0, 1, 0), player); - - goBackStand.setCustomNameVisible(true); - goBackStand.setCustomName(C.cGreenB + "Go Back"); - goBackStand.setArms(true); - goBackStand.setHelmet(new ItemStack(Material.SKULL_ITEM)); - goBackStand.setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setColor(Color.MAROON).build()); - goBackStand.setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setColor(Color.MAROON).build()); - goBackStand.setBoots(new ItemBuilder(Material.LEATHER_BOOTS).setColor(Color.MAROON).build()); - - _goBackStands.put(player, goBackStand); - UtilServer.runSyncLater(() -> { + ClientArmorStand goBackStand = ClientArmorStand.spawn(goBack.clone().add(0, 1, 0), player); + + goBackStand.setCustomNameVisible(true); + goBackStand.setCustomName(C.cGreenB + "Go Back"); + goBackStand.setArms(true); + goBackStand.setHelmet(new ItemStack(Material.SKULL_ITEM)); + goBackStand.setChestplate(new ItemBuilder(Material.LEATHER_CHESTPLATE).setColor(Color.MAROON).build()); + goBackStand.setLeggings(new ItemBuilder(Material.LEATHER_LEGGINGS).setColor(Color.MAROON).build()); + goBackStand.setBoots(new ItemBuilder(Material.LEATHER_BOOTS).setColor(Color.MAROON).build()); + + _goBackStands.put(player, goBackStand); + for (Location location : spawns.values()) { location.setYaw(UtilAlg.GetYaw(UtilAlg.getTrajectory(location, average))); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaProgression.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaProgression.java index ff4e65b67..f8c45e6cd 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaProgression.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaProgression.java @@ -18,6 +18,7 @@ import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerInteractAtEntityEvent; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAlg; @@ -68,20 +69,20 @@ public class MobaProgression implements Listener _roleViewers = new HashMap<>(); _roleShop = new MobaRoleShop(host.getArcadeManager()); - host.registerDebugCommand("fakeexp", Perm.DEBUG_FAKEEXP_COMMAND, (caller, args) -> + host.registerDebugCommand("fakeexp", Perm.DEBUG_FAKEEXP_COMMAND, PermissionGroup.DEV, (caller, args) -> { int exp = Integer.parseInt(args[0]); _host.GetGems(caller).put("Fake Exp", new GemData(exp, false)); caller.sendMessage(F.main("Debug", "Gave you " + F.elem(exp) + " fake exp.")); }); - host.registerDebugCommand("setmobalevel", Perm.DEBUG_SETMOBALEVEL_COMMAND, (caller, args) -> + host.registerDebugCommand("setmobalevel", Perm.DEBUG_SETMOBALEVEL_COMMAND, PermissionGroup.DEV, (caller, args) -> { MobaRole role = MobaRole.valueOf(args[0].toUpperCase()); int exp = getExpFor(Integer.parseInt(args[1]) - 1); _host.getArcadeManager().GetStatsManager().setStat(caller, _host.GetName() + "." + role.getName() + ".ExpEarned", exp); caller.sendMessage(F.main("Debug", "Set your " + role.getChatColor() + role.getName() + C.cGray + " level to " + F.elem(getLevel(exp) + 1) + ".")); }); - host.registerDebugCommand("unlockhero", Perm.DEBUG_UNLOCK_HERO_COMMAND, (caller, args) -> + host.registerDebugCommand("unlockhero", Perm.DEBUG_UNLOCK_HERO_COMMAND, PermissionGroup.DEV, (caller, args) -> { Donor donor = _host.getArcadeManager().GetDonation().Get(caller); String input = args[0]; @@ -96,7 +97,7 @@ public class MobaProgression implements Listener } } }); - host.registerDebugCommand("lockhero", Perm.DEBUG_LOCK_HERO_COMMAND, (caller, args) -> + host.registerDebugCommand("lockhero", Perm.DEBUG_LOCK_HERO_COMMAND, PermissionGroup.DEV, (caller, args) -> { Donor donor = _host.getArcadeManager().GetDonation().Get(caller); String input = args[0]; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaUnlockAnimation.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaUnlockAnimation.java index c597adcec..2f5eecb38 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaUnlockAnimation.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/progression/MobaUnlockAnimation.java @@ -9,7 +9,6 @@ import org.bukkit.FireworkEffect; import org.bukkit.FireworkEffect.Type; import org.bukkit.Location; import org.bukkit.Sound; -import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer; import org.bukkit.entity.ArmorStand; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -20,6 +19,7 @@ import org.bukkit.util.Vector; import com.mojang.authlib.GameProfile; +import mineplex.core.common.skin.SkinData; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAlg; @@ -90,11 +90,13 @@ public class MobaUnlockAnimation implements Listener _player.teleport(_toTeleport); _npcEntity = _npc.getWorld().spawn(_npc, ArmorStand.class); - GameProfile profile = new GameProfile(UUID.randomUUID(), _kit.GetName()); + GameProfile profile = new GameProfile(UUID.randomUUID(), SkinData.getUnusedSkullName()); profile.getProperties().clear(); profile.getProperties().put("textures", _kit.getSkinData().getProperty()); DisguisePlayer disguise = new DisguisePlayer(_npcEntity, profile); + disguise.getHologram() + .setText(_kit.getRole().getChatColor() + C.Bold + _kit.GetName()); _host.getArcadeManager().GetDisguise().disguise(disguise); } diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/structure/tower/TowerManager.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/structure/tower/TowerManager.java index 28da828f9..6b5c1802e 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/structure/tower/TowerManager.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/structure/tower/TowerManager.java @@ -290,7 +290,7 @@ public class TowerManager implements Listener { Location crystalLocation = tower.getCrystal().getLocation(); - if (tower.isDead() || tower.getOwner().equals(team) || UtilMath.offsetSquared(crystalLocation, location) > PROJECTILE_RANGE_SQUARED || shouldCancelDamage(tower, shooter)) + if (tower.isDead() || tower.getOwner().equals(team) || UtilMath.offsetSquared(crystalLocation, location) > PROJECTILE_RANGE_SQUARED || !canDamage(tower, team) || shouldCancelDamage(tower, shooter)) { continue; } @@ -349,7 +349,6 @@ public class TowerManager implements Listener { // Is other team // Is first tower - // Is same lane // Is dead if (!team.equals(other.getOwner()) && other.isFirstTower() && other.isDead()) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/training/MobaTraining.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/training/MobaTraining.java index 7455fc567..7b0245de3 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/training/MobaTraining.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/moba/training/MobaTraining.java @@ -25,6 +25,7 @@ import org.bukkit.event.player.PlayerJoinEvent; import org.bukkit.inventory.ItemStack; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAlg; @@ -194,7 +195,7 @@ public class MobaTraining extends Moba (int) (Math.ceil(subject.getHealth() / 2D))) .register(this); - registerDebugCommand("skip", Perm.DEBUG_SKIP_COMMAND, (caller, args) -> + registerDebugCommand("skip", Perm.DEBUG_SKIP_COMMAND, PermissionGroup.PLAYER, (caller, args) -> { if (!safeFunction.apply(caller)) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/modes/EweHeroes.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/modes/EweHeroes.java index b66971a8c..02e21aae1 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/modes/EweHeroes.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/sheep/modes/EweHeroes.java @@ -46,8 +46,7 @@ public class EweHeroes extends SheepGame Manager.getCosmeticManager().setHideParticles(true); Manager.getClassManager().GetItemFactory().getProximityManager().setProxyLimit(6); - - StrictAntiHack = true; + getModule(TeamArmorModule.class) .dontGiveTeamArmor(); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/Skyfall.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/Skyfall.java index b5ca174a0..2580bc656 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/Skyfall.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skyfall/Skyfall.java @@ -236,8 +236,7 @@ public abstract class Skyfall extends Game InventoryOpenChest = true; DamageFall = false; SoupEnabled = true; - StrictAntiHack = false; - + new CompassModule() .setGiveCompassToAlive(true) .register(this); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java index a82efebfc..98ef05ea6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/skywars/Skywars.java @@ -173,8 +173,6 @@ public abstract class Skywars extends Game .setGiveCompassToAlive(true) .register(this); - StrictAntiHack = true; - GameTimeout = 1500000L; DeathDropItems = true; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java index 467ebdb99..f984fb115 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/smash/SuperSmash.java @@ -33,6 +33,7 @@ import org.bukkit.scheduler.BukkitRunnable; import com.google.common.collect.Sets; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.blockrestore.BlockRestore; import mineplex.core.common.util.C; import mineplex.core.common.util.F; @@ -147,7 +148,7 @@ public abstract class SuperSmash extends Game new PerkSpreadsheetModule(this, "SMASH_KITS"); - registerDebugCommand("cooldown", Perm.DEBUG_COOLDOWN_COMMAND, (caller, args) -> + registerDebugCommand("cooldown", Perm.DEBUG_COOLDOWN_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { for (Player other : UtilServer.getPlayers()) { @@ -156,16 +157,16 @@ public abstract class SuperSmash extends Game Announce(C.cWhiteB + caller.getName() + C.cAquaB + " reset cooldowns!"); }); - registerDebugCommand("nextsmash", Perm.DEBUG_NEXTSMASH_COMMAND, (caller, args) -> + registerDebugCommand("nextsmash", Perm.DEBUG_NEXTSMASH_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { _nextPowerup = System.currentTimeMillis() + 1000; Announce(C.cWhiteB + caller.getName() + C.cAquaB + " spawned a smash crystal!"); }); - registerDebugCommand("smash", Perm.DEBUG_SMASH_COMMAND, (caller, args) -> + registerDebugCommand("smash", Perm.DEBUG_SMASH_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { giveSmashItem(caller); }); - registerDebugCommand("kit", Perm.DEBUG_KIT_COMMAND, (caller, args) -> + registerDebugCommand("kit", Perm.DEBUG_KIT_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { String kit = ""; @@ -187,7 +188,7 @@ public abstract class SuperSmash extends Game caller.sendMessage(F.main("Kit", "Sorry that is not a kit!")); }); - registerDebugCommand("lives", Perm.DEBUG_LIVES_COMMAND, (caller, args) -> + registerDebugCommand("lives", Perm.DEBUG_LIVES_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { Announce(C.cWhiteB + caller.getName() + C.cAquaB + " reset their lives!"); diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java index 4183d54aa..658a779c2 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/speedbuilders/SpeedBuilders.java @@ -56,6 +56,7 @@ import org.bukkit.potion.PotionEffectType; import org.bukkit.util.Vector; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.MapUtil; @@ -213,7 +214,7 @@ public class SpeedBuilders extends SoloGame .setGiveCompassToAlive(false) .register(this); - registerDebugCommand("setnext", Perm.DEBUG_SETNEXT_COMMAND, (caller, args) -> + registerDebugCommand("setnext", Perm.DEBUG_SETNEXT_COMMAND, PermissionGroup.BUILDER, (caller, args) -> { if (!UtilServer.isTestServer()) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/typewars/TypeWars.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/typewars/TypeWars.java index a1bc7f4c5..5702aadcb 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/typewars/TypeWars.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/typewars/TypeWars.java @@ -29,6 +29,7 @@ import org.bukkit.inventory.meta.LeatherArmorMeta; import org.bukkit.util.Vector; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilAction; @@ -194,12 +195,12 @@ public class TypeWars extends TeamGame .giveHotbarItem() .register(this); - registerDebugCommand("money", Perm.DEBUG_MONEY_COMMAND, (caller, args) -> + registerDebugCommand("money", Perm.DEBUG_MONEY_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { _moneyMap.put(caller, 1000); UtilPlayer.message(caller, F.main("Money", "You got some Money")); }); - registerDebugCommand("boss", Perm.DEBUG_BOSS_COMMAND, (caller, args) -> + registerDebugCommand("boss", Perm.DEBUG_BOSS_COMMAND, PermissionGroup.DEV, (caller, args) -> { if (!IsPlaying(caller)) return; diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java index 4c9568e64..6819d2df6 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/games/uhc/UHC.java @@ -71,6 +71,7 @@ import org.bukkit.scoreboard.Objective; import org.spigotmc.ActivationRange; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.boosters.event.BoosterItemGiveEvent; import mineplex.core.common.Pair; import mineplex.core.common.util.C; @@ -311,7 +312,7 @@ public abstract class UHC extends Game registerQuestTrackers(new TameQuestTracker(this)); - registerDebugCommand("startpvp", Perm.DEBUG_STARTPVP_COMMAND, (caller, args) -> + registerDebugCommand("startpvp", Perm.DEBUG_STARTPVP_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { if (!IsLive()) { @@ -331,7 +332,7 @@ public abstract class UHC extends Game UtilPlayer.message(caller, F.main("Debug", "Started PvP")); }); - registerDebugCommand("worldinfo", Perm.DEBUG_WORLDINFO_COMMAND, (caller, args) -> + registerDebugCommand("worldinfo", Perm.DEBUG_WORLDINFO_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { if (args == null || args.length == 0) { @@ -439,16 +440,16 @@ public abstract class UHC extends Game } return; }); - registerDebugCommand("uhcgames", Perm.DEBUG_UHCGAMES_COMMAND, (caller, args) -> + registerDebugCommand("uhcgames", Perm.DEBUG_UHCGAMES_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { UtilPlayer.message(caller, F.main("Debug", "As of now, there have been " + _gamesRun + " games played")); }); - registerDebugCommand("uhcgc", Perm.DEBUG_GC_COMMAND, (caller, args) -> + registerDebugCommand("uhcgc", Perm.DEBUG_GC_COMMAND, PermissionGroup.DEV, (caller, args) -> { System.gc(); UtilPlayer.message(caller, F.main("Debug", "Cleaned up!")); }); - registerDebugCommand("setcombatlogtimeout", Perm.DEBUG_SETCOMBATLOGTIMEOUT_COMMAND, (caller, args) -> + registerDebugCommand("setcombatlogtimeout", Perm.DEBUG_SETCOMBATLOGTIMEOUT_COMMAND, PermissionGroup.DEV, (caller, args) -> { CombatLogModule module = getModule(CombatLogModule.class); if (module == null) @@ -474,14 +475,14 @@ public abstract class UHC extends Game UtilPlayer.message(caller, F.main("Debug", "That's not a number!")); } }); - registerDebugCommand("dm", Perm.DEBUG_DEATHMATCH_COMMAND, (caller, args) -> + registerDebugCommand("dm", Perm.DEBUG_DEATHMATCH_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { SAFE_TIME = 0; MINING_TIME = 1000; startPreDeathmatch(); UtilPlayer.message(caller, F.main("Debug", "Starting deathmatch")); }); - registerDebugCommand("uhcentities", Perm.DEBUG_ENTITIES_COMMAND, (caller, args) -> + registerDebugCommand("uhcentities", Perm.DEBUG_ENTITIES_COMMAND, PermissionGroup.DEV, (caller, args) -> { for (Entity entity : caller.getNearbyEntities(5.0, 5.0, 5.0)) { @@ -497,7 +498,7 @@ public abstract class UHC extends Game caller.sendMessage(debug); } }); - registerDebugCommand("uhcchunk", Perm.DEBUG_CHUNK_COMMAND, (caller, args) -> + registerDebugCommand("uhcchunk", Perm.DEBUG_CHUNK_COMMAND, PermissionGroup.DEV, (caller, args) -> { net.minecraft.server.v1_8_R3.Chunk chunk = ((CraftChunk) caller.getLocation().getChunk()).getHandle(); try @@ -539,7 +540,7 @@ public abstract class UHC extends Game t.printStackTrace(); } }); - registerDebugCommand("uhcallchunks", Perm.DEBUG_CALLCHUNKS_COMMAND, (caller, args) -> + registerDebugCommand("uhcallchunks", Perm.DEBUG_CALLCHUNKS_COMMAND, PermissionGroup.DEV, (caller, args) -> { for (net.minecraft.server.v1_8_R3.Chunk chunk : ((CraftWorld) caller.getWorld()).getHandle().chunkProviderServer.chunks.values()) { diff --git a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/RejoinModule.java b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/RejoinModule.java index 267590ac4..ca3f26b6b 100644 --- a/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/RejoinModule.java +++ b/Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/game/modules/RejoinModule.java @@ -14,6 +14,7 @@ import org.bukkit.event.player.PlayerLoginEvent; import org.bukkit.event.player.PlayerQuitEvent; import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.C; import mineplex.core.common.util.F; import mineplex.core.common.util.NautHashMap; @@ -39,7 +40,7 @@ public class RejoinModule extends Module @Override protected void setup() { - getGame().registerDebugCommand("rejoin", Perm.DEBUG_REJOIN_COMMAND, (caller, args) -> + getGame().registerDebugCommand("rejoin", Perm.DEBUG_REJOIN_COMMAND, PermissionGroup.ADMIN, (caller, args) -> { if (args.length < 1) { diff --git a/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/MountModule.java b/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/MountModule.java index 5d673e3f4..022d5dd01 100644 --- a/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/MountModule.java +++ b/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/MountModule.java @@ -7,6 +7,8 @@ import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.entity.Entity; import org.bukkit.entity.Horse; +import org.bukkit.entity.Horse.Color; +import org.bukkit.entity.Horse.Style; import org.bukkit.entity.Horse.Variant; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -24,13 +26,20 @@ import org.bukkit.inventory.ItemStack; import mineplex.core.MiniClientPlugin; import mineplex.core.ReflectivelyCreateMiniPlugin; +import mineplex.core.account.permissions.Permission; +import mineplex.core.account.permissions.PermissionGroup; import mineplex.core.common.util.F; import mineplex.core.common.util.UtilEnt; import mineplex.core.common.util.UtilMath; import mineplex.core.common.util.UtilServer; +import mineplex.core.cosmetic.CosmeticManager; import mineplex.core.disguise.DisguiseManager; +import mineplex.core.disguise.disguises.DisguiseBase; +import mineplex.core.disguise.disguises.DisguiseInsentient; import mineplex.core.gadget.GadgetManager; +import mineplex.core.gadget.event.GadgetEnableEvent; import mineplex.core.gadget.gadgets.gamemodifiers.gemhunters.GemHuntersMountGadget; +import mineplex.core.gadget.types.GadgetType; import mineplex.core.game.GameDisplay; import mineplex.core.recharge.Recharge; import mineplex.core.updater.UpdateType; @@ -38,16 +47,26 @@ import mineplex.core.updater.event.UpdateEvent; import mineplex.core.utils.UtilVariant; import mineplex.gemhunters.loot.LootItem; import mineplex.gemhunters.loot.LootModule; +import mineplex.gemhunters.mount.command.MountSkinsCommand; +import mineplex.gemhunters.mount.command.SpawnMountCommand; @ReflectivelyCreateMiniPlugin public class MountModule extends MiniClientPlugin { + public enum Perm implements Permission + { + + MOUNT_SKINS_COMMAND, + SPAWN_MOUNT_COMMAND + } + private static final ItemStack SADDLE = new ItemStack(Material.SADDLE); private static final int HEALTH = 40; private static final int MAX_DIST = 25 * 25; private static final int MIN_DIST = 4 * 4; + private final CosmeticManager _cosmetic; private final DisguiseManager _disguise; private final LootModule _loot; private final GadgetManager _gadget; @@ -56,9 +75,25 @@ public class MountModule extends MiniClientPlugin { super("Mount"); + _cosmetic = require(CosmeticManager.class); _disguise = require(DisguiseManager.class); _loot = require(LootModule.class); _gadget = require(GadgetManager.class); + + generatePermissions(); + } + + private void generatePermissions() + { + PermissionGroup.PLAYER.setPermission(Perm.MOUNT_SKINS_COMMAND, true, true); + PermissionGroup.ADMIN.setPermission(Perm.SPAWN_MOUNT_COMMAND, true, true); + } + + @Override + public void addCommands() + { + addCommand(new MountSkinsCommand(this)); + addCommand(new SpawnMountCommand(this)); } @Override @@ -89,7 +124,7 @@ public class MountModule extends MiniClientPlugin String metadata = lootItem.getMetadata(); String[] split = metadata.split(" "); - if (split.length < 2) + if (split.length < 2 || !split[0].equals("MOUNT")) { return; } @@ -119,6 +154,11 @@ public class MountModule extends MiniClientPlugin return; } + spawnHorse(player, data, lootItem.getItemStack(), cooldown); + } + + public void spawnHorse(Player player, MountData data, ItemStack itemStack, long cooldown) + { Location location = player.getLocation().add(0, 1, 0); GemHuntersMountGadget gadget = (GemHuntersMountGadget) _gadget.getGameCosmeticManager().getActiveCosmetic( player, @@ -131,6 +171,8 @@ public class MountModule extends MiniClientPlugin if (gadget == null) { horse = UtilVariant.spawnHorse(location, Variant.HORSE); + horse.setColor(Color.BROWN); + horse.setStyle(Style.NONE); } else { @@ -142,16 +184,24 @@ public class MountModule extends MiniClientPlugin horse.setCustomNameVisible(true); horse.setJumpStrength(1); horse.getInventory().setSaddle(SADDLE); - horse.getInventory().setArmor(new ItemStack(lootItem.getItemStack().getType())); + horse.getInventory().setArmor(new ItemStack(itemStack.getType())); horse.setDomestication(1); horse.setMaxDomestication(1); horse.setOwner(player); horse.setTamed(true); + horse.setCarryingChest(true); horse.setMaxHealth(HEALTH); horse.setHealth(HEALTH); - UtilEnt.vegetate(player); + UtilEnt.vegetate(horse); - data.onSpawn(horse, cooldown, lootItem.getItemStack()); + DisguiseBase disguise = _disguise.getActiveDisguise(horse); + + if (disguise != null && disguise instanceof DisguiseInsentient) + { + ((DisguiseInsentient) disguise).setName(name); + } + + data.onSpawn(horse, cooldown, itemStack); player.sendMessage(F.main(_moduleName, "You spawned your " + F.name(getName()) + ".")); } @@ -323,7 +373,31 @@ public class MountModule extends MiniClientPlugin "Mount Skins" ); + if (gadget == null) + { + continue; + } + gadget.getType().onUpdate(event, data.getEntity()); } } + + @EventHandler + public void gadgetEquip(GadgetEnableEvent event) + { + if (event.getGadget().getGadgetType() != GadgetType.GAME_MODIFIER) + { + event.setCancelled(true); + } + } + + public CosmeticManager getCosmeticManager() + { + return _cosmetic; + } + + public GadgetManager getGadgetManager() + { + return _gadget; + } } diff --git a/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/command/MountSkinsCommand.java b/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/command/MountSkinsCommand.java new file mode 100644 index 000000000..148558ede --- /dev/null +++ b/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/command/MountSkinsCommand.java @@ -0,0 +1,25 @@ +package mineplex.gemhunters.mount.command; + +import org.bukkit.entity.Player; + +import mineplex.core.command.CommandBase; +import mineplex.core.gadget.gadgets.gamemodifiers.GameCosmeticCategory; +import mineplex.core.game.GameDisplay; +import mineplex.gemhunters.mount.MountModule; +import mineplex.gemhunters.mount.MountModule.Perm; + +public class MountSkinsCommand extends CommandBase +{ + + public MountSkinsCommand(MountModule plugin) + { + super(plugin, Perm.MOUNT_SKINS_COMMAND, "mount", "mounts", "skins", "mountskins"); + } + + @Override + public void Execute(Player caller, String[] args) + { + GameCosmeticCategory category = Plugin.getGadgetManager().getGameCosmeticManager().getCategoryFrom(GameDisplay.GemHunters, "Mount Skins"); + Plugin.getCosmeticManager().getShop().openPageForPlayer(caller, category.getGadgetPage(Plugin.getCosmeticManager(), caller)); + } +} diff --git a/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/command/SpawnMountCommand.java b/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/command/SpawnMountCommand.java new file mode 100644 index 000000000..9acb6f4a9 --- /dev/null +++ b/Plugins/mineplex-game-gemhunters/src/mineplex/gemhunters/mount/command/SpawnMountCommand.java @@ -0,0 +1,32 @@ +package mineplex.gemhunters.mount.command; + +import org.bukkit.Material; +import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; + +import mineplex.core.command.CommandBase; +import mineplex.gemhunters.mount.MountData; +import mineplex.gemhunters.mount.MountModule; +import mineplex.gemhunters.mount.MountModule.Perm; + +public class SpawnMountCommand extends CommandBase +{ + + public SpawnMountCommand(MountModule plugin) + { + super(plugin, Perm.SPAWN_MOUNT_COMMAND, "spawnmount"); + } + + @Override + public void Execute(Player caller, String[] args) + { + MountData data = Plugin.Get(caller); + + if (data.getEntity() != null) + { + data.getEntity().remove(); + } + + Plugin.spawnHorse(caller, data, new ItemStack(Material.DIAMOND_BARDING), 0); + } +} diff --git a/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/skinhelper/SkinHelperUI.java b/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/skinhelper/SkinHelperUI.java index 5994e634c..01aeea6aa 100644 --- a/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/skinhelper/SkinHelperUI.java +++ b/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/skinhelper/SkinHelperUI.java @@ -5,6 +5,8 @@ import javax.swing.border.EmptyBorder; import java.awt.*; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; +import java.util.HashMap; +import java.util.Map; import java.util.concurrent.TimeUnit; import mineplex.googlesheets.util.SkinFetcher; @@ -13,6 +15,8 @@ import mineplex.googlesheets.util.UUIDFetcher; public class SkinHelperUI extends JFrame { + private static final Map UUID_CACHE = new HashMap<>(); + private static final Font FONT = new Font("Verdana", Font.PLAIN, 12); private static final long FETCH_WAIT_TIME = 30; private static final long FETCH_WAIT_MILLISECONDS = TimeUnit.SECONDS.toMillis(FETCH_WAIT_TIME); @@ -97,7 +101,16 @@ public class SkinHelperUI extends JFrame try { - String[] skinData = SkinFetcher.getSkinData(UUIDFetcher.getPlayerUUIDNoDashes(txtMinecraftName.getText())); + String input = txtMinecraftName.getText(); + String uuid = UUID_CACHE.get(input); + + if (uuid == null) + { + uuid = UUIDFetcher.getPlayerUUIDNoDashes(input); + UUID_CACHE.put(input, uuid); + } + + String[] skinData = SkinFetcher.getSkinData(uuid); txtSkinValue.setText(skinData[0]); txtSkinSignature.setText(skinData[1]); diff --git a/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/util/SkinFetcher.java b/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/util/SkinFetcher.java index a8bdf6666..cbc9d02a1 100644 --- a/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/util/SkinFetcher.java +++ b/Plugins/mineplex-google-sheets/src/mineplex/googlesheets/util/SkinFetcher.java @@ -14,28 +14,11 @@ public class SkinFetcher JSONObject object = UtilJSON.getFromURL(SKIN_URL.replaceFirst("UUID", uuid)); JSONArray properties = (JSONArray) object.get("properties"); - System.out.println(properties.size()); - - for (Object o : properties) - { - System.out.println(o.toString()); - } - JSONObject innerObject = (JSONObject) properties.get(0); - System.out.println(innerObject.size()); - - for (Object o : innerObject.entrySet()) - { - System.out.println(o.toString()); - } - skinData[1] = (String) innerObject.get("signature"); skinData[0] = (String) innerObject.get("value"); - System.out.println(skinData[0]); - System.out.println(skinData[1]); - return skinData; }