remove stats system

improve operations and make them extendable more easily and let other plugins add operations, like requirements 
move requirements/operations out of ranks class as they will be used in prestiges
This commit is contained in:
okx-code
2018-09-01 23:50:57 +01:00
parent 6ba4dcb4d0
commit e9d7a9791a
26 changed files with 513 additions and 487 deletions
+355 -355
View File
@@ -112,6 +112,61 @@ public class Metrics {
} }
} }
/**
* Sends the data to the bStats server.
*
* @param data The data to send.
* @throws Exception If the request failed.
*/
private static void sendData(JSONObject data) throws Exception {
if (data == null) {
throw new IllegalArgumentException("Data cannot be null!");
}
if (Bukkit.isPrimaryThread()) {
throw new IllegalAccessException("This method must not be called from the main thread!");
}
HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection();
// Compress the data to save bandwidth
byte[] compressedData = compress(data.toString());
// Add headers
connection.setRequestMethod("POST");
connection.addRequestProperty("Accept", "application/json");
connection.addRequestProperty("Connection", "close");
connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request
connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length));
connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format
connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION);
// Send data
connection.setDoOutput(true);
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.write(compressedData);
outputStream.flush();
outputStream.close();
connection.getInputStream().close(); // We don't care about the response - Just send our data :)
}
/**
* Gzips the given String.
*
* @param str The string to gzip.
* @return The gzipped String.
* @throws IOException If the compression failed.
*/
private static byte[] compress(final String str) throws IOException {
if (str == null) {
return null;
}
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(outputStream);
gzip.write(str.getBytes("UTF-8"));
gzip.close();
return outputStream.toByteArray();
}
/** /**
* Adds a custom chart. * Adds a custom chart.
* *
@@ -257,58 +312,318 @@ public class Metrics {
} }
/** /**
* Sends the data to the bStats server. * A enum which is used for custom maps.
*
* @param data The data to send.
* @throws Exception If the request failed.
*/ */
private static void sendData(JSONObject data) throws Exception { public enum Country {
if (data == null) {
throw new IllegalArgumentException("Data cannot be null!");
}
if (Bukkit.isPrimaryThread()) {
throw new IllegalAccessException("This method must not be called from the main thread!");
}
HttpsURLConnection connection = (HttpsURLConnection) new URL(URL).openConnection();
// Compress the data to save bandwidth /**
byte[] compressedData = compress(data.toString()); * bStats will use the country of the server.
*/
AUTO_DETECT("AUTO", "Auto Detected"),
// Add headers ANDORRA("AD", "Andorra"),
connection.setRequestMethod("POST"); UNITED_ARAB_EMIRATES("AE", "United Arab Emirates"),
connection.addRequestProperty("Accept", "application/json"); AFGHANISTAN("AF", "Afghanistan"),
connection.addRequestProperty("Connection", "close"); ANTIGUA_AND_BARBUDA("AG", "Antigua and Barbuda"),
connection.addRequestProperty("Content-Encoding", "gzip"); // We gzip our request ANGUILLA("AI", "Anguilla"),
connection.addRequestProperty("Content-Length", String.valueOf(compressedData.length)); ALBANIA("AL", "Albania"),
connection.setRequestProperty("Content-Type", "application/json"); // We send our data in JSON format ARMENIA("AM", "Armenia"),
connection.setRequestProperty("User-Agent", "MC-Server/" + B_STATS_VERSION); NETHERLANDS_ANTILLES("AN", "Netherlands Antilles"),
ANGOLA("AO", "Angola"),
ANTARCTICA("AQ", "Antarctica"),
ARGENTINA("AR", "Argentina"),
AMERICAN_SAMOA("AS", "American Samoa"),
AUSTRIA("AT", "Austria"),
AUSTRALIA("AU", "Australia"),
ARUBA("AW", "Aruba"),
ÅLAND_ISLANDS("AX", "Åland Islands"),
AZERBAIJAN("AZ", "Azerbaijan"),
BOSNIA_AND_HERZEGOVINA("BA", "Bosnia and Herzegovina"),
BARBADOS("BB", "Barbados"),
BANGLADESH("BD", "Bangladesh"),
BELGIUM("BE", "Belgium"),
BURKINA_FASO("BF", "Burkina Faso"),
BULGARIA("BG", "Bulgaria"),
BAHRAIN("BH", "Bahrain"),
BURUNDI("BI", "Burundi"),
BENIN("BJ", "Benin"),
SAINT_BARTHÉLEMY("BL", "Saint Barthélemy"),
BERMUDA("BM", "Bermuda"),
BRUNEI("BN", "Brunei"),
BOLIVIA("BO", "Bolivia"),
BONAIRE_SINT_EUSTATIUS_AND_SABA("BQ", "Bonaire, Sint Eustatius and Saba"),
BRAZIL("BR", "Brazil"),
BAHAMAS("BS", "Bahamas"),
BHUTAN("BT", "Bhutan"),
BOUVET_ISLAND("BV", "Bouvet Island"),
BOTSWANA("BW", "Botswana"),
BELARUS("BY", "Belarus"),
BELIZE("BZ", "Belize"),
CANADA("CA", "Canada"),
COCOS_ISLANDS("CC", "Cocos Islands"),
THE_DEMOCRATIC_REPUBLIC_OF_CONGO("CD", "The Democratic Republic Of Congo"),
CENTRAL_AFRICAN_REPUBLIC("CF", "Central African Republic"),
CONGO("CG", "Congo"),
SWITZERLAND("CH", "Switzerland"),
CÔTE_D_IVOIRE("CI", "Côte d'Ivoire"),
COOK_ISLANDS("CK", "Cook Islands"),
CHILE("CL", "Chile"),
CAMEROON("CM", "Cameroon"),
CHINA("CN", "China"),
COLOMBIA("CO", "Colombia"),
COSTA_RICA("CR", "Costa Rica"),
CUBA("CU", "Cuba"),
CAPE_VERDE("CV", "Cape Verde"),
CURAÇAO("CW", "Curaçao"),
CHRISTMAS_ISLAND("CX", "Christmas Island"),
CYPRUS("CY", "Cyprus"),
CZECH_REPUBLIC("CZ", "Czech Republic"),
GERMANY("DE", "Germany"),
DJIBOUTI("DJ", "Djibouti"),
DENMARK("DK", "Denmark"),
DOMINICA("DM", "Dominica"),
DOMINICAN_REPUBLIC("DO", "Dominican Republic"),
ALGERIA("DZ", "Algeria"),
ECUADOR("EC", "Ecuador"),
ESTONIA("EE", "Estonia"),
EGYPT("EG", "Egypt"),
WESTERN_SAHARA("EH", "Western Sahara"),
ERITREA("ER", "Eritrea"),
SPAIN("ES", "Spain"),
ETHIOPIA("ET", "Ethiopia"),
FINLAND("FI", "Finland"),
FIJI("FJ", "Fiji"),
FALKLAND_ISLANDS("FK", "Falkland Islands"),
MICRONESIA("FM", "Micronesia"),
FAROE_ISLANDS("FO", "Faroe Islands"),
FRANCE("FR", "France"),
GABON("GA", "Gabon"),
UNITED_KINGDOM("GB", "United Kingdom"),
GRENADA("GD", "Grenada"),
GEORGIA("GE", "Georgia"),
FRENCH_GUIANA("GF", "French Guiana"),
GUERNSEY("GG", "Guernsey"),
GHANA("GH", "Ghana"),
GIBRALTAR("GI", "Gibraltar"),
GREENLAND("GL", "Greenland"),
GAMBIA("GM", "Gambia"),
GUINEA("GN", "Guinea"),
GUADELOUPE("GP", "Guadeloupe"),
EQUATORIAL_GUINEA("GQ", "Equatorial Guinea"),
GREECE("GR", "Greece"),
SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS("GS", "South Georgia And The South Sandwich Islands"),
GUATEMALA("GT", "Guatemala"),
GUAM("GU", "Guam"),
GUINEA_BISSAU("GW", "Guinea-Bissau"),
GUYANA("GY", "Guyana"),
HONG_KONG("HK", "Hong Kong"),
HEARD_ISLAND_AND_MCDONALD_ISLANDS("HM", "Heard Island And McDonald Islands"),
HONDURAS("HN", "Honduras"),
CROATIA("HR", "Croatia"),
HAITI("HT", "Haiti"),
HUNGARY("HU", "Hungary"),
INDONESIA("ID", "Indonesia"),
IRELAND("IE", "Ireland"),
ISRAEL("IL", "Israel"),
ISLE_OF_MAN("IM", "Isle Of Man"),
INDIA("IN", "India"),
BRITISH_INDIAN_OCEAN_TERRITORY("IO", "British Indian Ocean Territory"),
IRAQ("IQ", "Iraq"),
IRAN("IR", "Iran"),
ICELAND("IS", "Iceland"),
ITALY("IT", "Italy"),
JERSEY("JE", "Jersey"),
JAMAICA("JM", "Jamaica"),
JORDAN("JO", "Jordan"),
JAPAN("JP", "Japan"),
KENYA("KE", "Kenya"),
KYRGYZSTAN("KG", "Kyrgyzstan"),
CAMBODIA("KH", "Cambodia"),
KIRIBATI("KI", "Kiribati"),
COMOROS("KM", "Comoros"),
SAINT_KITTS_AND_NEVIS("KN", "Saint Kitts And Nevis"),
NORTH_KOREA("KP", "North Korea"),
SOUTH_KOREA("KR", "South Korea"),
KUWAIT("KW", "Kuwait"),
CAYMAN_ISLANDS("KY", "Cayman Islands"),
KAZAKHSTAN("KZ", "Kazakhstan"),
LAOS("LA", "Laos"),
LEBANON("LB", "Lebanon"),
SAINT_LUCIA("LC", "Saint Lucia"),
LIECHTENSTEIN("LI", "Liechtenstein"),
SRI_LANKA("LK", "Sri Lanka"),
LIBERIA("LR", "Liberia"),
LESOTHO("LS", "Lesotho"),
LITHUANIA("LT", "Lithuania"),
LUXEMBOURG("LU", "Luxembourg"),
LATVIA("LV", "Latvia"),
LIBYA("LY", "Libya"),
MOROCCO("MA", "Morocco"),
MONACO("MC", "Monaco"),
MOLDOVA("MD", "Moldova"),
MONTENEGRO("ME", "Montenegro"),
SAINT_MARTIN("MF", "Saint Martin"),
MADAGASCAR("MG", "Madagascar"),
MARSHALL_ISLANDS("MH", "Marshall Islands"),
MACEDONIA("MK", "Macedonia"),
MALI("ML", "Mali"),
MYANMAR("MM", "Myanmar"),
MONGOLIA("MN", "Mongolia"),
MACAO("MO", "Macao"),
NORTHERN_MARIANA_ISLANDS("MP", "Northern Mariana Islands"),
MARTINIQUE("MQ", "Martinique"),
MAURITANIA("MR", "Mauritania"),
MONTSERRAT("MS", "Montserrat"),
MALTA("MT", "Malta"),
MAURITIUS("MU", "Mauritius"),
MALDIVES("MV", "Maldives"),
MALAWI("MW", "Malawi"),
MEXICO("MX", "Mexico"),
MALAYSIA("MY", "Malaysia"),
MOZAMBIQUE("MZ", "Mozambique"),
NAMIBIA("NA", "Namibia"),
NEW_CALEDONIA("NC", "New Caledonia"),
NIGER("NE", "Niger"),
NORFOLK_ISLAND("NF", "Norfolk Island"),
NIGERIA("NG", "Nigeria"),
NICARAGUA("NI", "Nicaragua"),
NETHERLANDS("NL", "Netherlands"),
NORWAY("NO", "Norway"),
NEPAL("NP", "Nepal"),
NAURU("NR", "Nauru"),
NIUE("NU", "Niue"),
NEW_ZEALAND("NZ", "New Zealand"),
OMAN("OM", "Oman"),
PANAMA("PA", "Panama"),
PERU("PE", "Peru"),
FRENCH_POLYNESIA("PF", "French Polynesia"),
PAPUA_NEW_GUINEA("PG", "Papua New Guinea"),
PHILIPPINES("PH", "Philippines"),
PAKISTAN("PK", "Pakistan"),
POLAND("PL", "Poland"),
SAINT_PIERRE_AND_MIQUELON("PM", "Saint Pierre And Miquelon"),
PITCAIRN("PN", "Pitcairn"),
PUERTO_RICO("PR", "Puerto Rico"),
PALESTINE("PS", "Palestine"),
PORTUGAL("PT", "Portugal"),
PALAU("PW", "Palau"),
PARAGUAY("PY", "Paraguay"),
QATAR("QA", "Qatar"),
REUNION("RE", "Reunion"),
ROMANIA("RO", "Romania"),
SERBIA("RS", "Serbia"),
RUSSIA("RU", "Russia"),
RWANDA("RW", "Rwanda"),
SAUDI_ARABIA("SA", "Saudi Arabia"),
SOLOMON_ISLANDS("SB", "Solomon Islands"),
SEYCHELLES("SC", "Seychelles"),
SUDAN("SD", "Sudan"),
SWEDEN("SE", "Sweden"),
SINGAPORE("SG", "Singapore"),
SAINT_HELENA("SH", "Saint Helena"),
SLOVENIA("SI", "Slovenia"),
SVALBARD_AND_JAN_MAYEN("SJ", "Svalbard And Jan Mayen"),
SLOVAKIA("SK", "Slovakia"),
SIERRA_LEONE("SL", "Sierra Leone"),
SAN_MARINO("SM", "San Marino"),
SENEGAL("SN", "Senegal"),
SOMALIA("SO", "Somalia"),
SURINAME("SR", "Suriname"),
SOUTH_SUDAN("SS", "South Sudan"),
SAO_TOME_AND_PRINCIPE("ST", "Sao Tome And Principe"),
EL_SALVADOR("SV", "El Salvador"),
SINT_MAARTEN_DUTCH_PART("SX", "Sint Maarten (Dutch part)"),
SYRIA("SY", "Syria"),
SWAZILAND("SZ", "Swaziland"),
TURKS_AND_CAICOS_ISLANDS("TC", "Turks And Caicos Islands"),
CHAD("TD", "Chad"),
FRENCH_SOUTHERN_TERRITORIES("TF", "French Southern Territories"),
TOGO("TG", "Togo"),
THAILAND("TH", "Thailand"),
TAJIKISTAN("TJ", "Tajikistan"),
TOKELAU("TK", "Tokelau"),
TIMOR_LESTE("TL", "Timor-Leste"),
TURKMENISTAN("TM", "Turkmenistan"),
TUNISIA("TN", "Tunisia"),
TONGA("TO", "Tonga"),
TURKEY("TR", "Turkey"),
TRINIDAD_AND_TOBAGO("TT", "Trinidad and Tobago"),
TUVALU("TV", "Tuvalu"),
TAIWAN("TW", "Taiwan"),
TANZANIA("TZ", "Tanzania"),
UKRAINE("UA", "Ukraine"),
UGANDA("UG", "Uganda"),
UNITED_STATES_MINOR_OUTLYING_ISLANDS("UM", "United States Minor Outlying Islands"),
UNITED_STATES("US", "United States"),
URUGUAY("UY", "Uruguay"),
UZBEKISTAN("UZ", "Uzbekistan"),
VATICAN("VA", "Vatican"),
SAINT_VINCENT_AND_THE_GRENADINES("VC", "Saint Vincent And The Grenadines"),
VENEZUELA("VE", "Venezuela"),
BRITISH_VIRGIN_ISLANDS("VG", "British Virgin Islands"),
U_S__VIRGIN_ISLANDS("VI", "U.S. Virgin Islands"),
VIETNAM("VN", "Vietnam"),
VANUATU("VU", "Vanuatu"),
WALLIS_AND_FUTUNA("WF", "Wallis And Futuna"),
SAMOA("WS", "Samoa"),
YEMEN("YE", "Yemen"),
MAYOTTE("YT", "Mayotte"),
SOUTH_AFRICA("ZA", "South Africa"),
ZAMBIA("ZM", "Zambia"),
ZIMBABWE("ZW", "Zimbabwe");
// Send data private String isoTag;
connection.setDoOutput(true); private String name;
DataOutputStream outputStream = new DataOutputStream(connection.getOutputStream());
outputStream.write(compressedData);
outputStream.flush();
outputStream.close();
connection.getInputStream().close(); // We don't care about the response - Just send our data :) Country(String isoTag, String name) {
this.isoTag = isoTag;
this.name = name;
} }
/** /**
* Gzips the given String. * Gets a country by it's iso tag.
* *
* @param str The string to gzip. * @param isoTag The iso tag of the county.
* @return The gzipped String. * @return The country with the given iso tag or <code>null</code> if unknown.
* @throws IOException If the compression failed.
*/ */
private static byte[] compress(final String str) throws IOException { public static Country byIsoTag(String isoTag) {
if (str == null) { for (Country country : Country.values()) {
if (country.getCountryIsoTag().equals(isoTag)) {
return country;
}
}
return null; return null;
} }
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
GZIPOutputStream gzip = new GZIPOutputStream(outputStream); /**
gzip.write(str.getBytes("UTF-8")); * Gets a country by a locale.
gzip.close(); *
return outputStream.toByteArray(); * @param locale The locale.
* @return The country from the giben locale or <code>null</code> if unknown country or
* if the locale does not contain a country.
*/
public static Country byLocale(Locale locale) {
return byIsoTag(locale.getCountry());
}
/**
* Gets the name of the country.
*
* @return The name of the country.
*/
public String getCountryName() {
return name;
}
/**
* Gets the iso tag of the country.
*
* @return The iso tag of the country.
*/
public String getCountryIsoTag() {
return isoTag;
}
} }
/** /**
@@ -608,319 +923,4 @@ public class Metrics {
} }
/**
* A enum which is used for custom maps.
*/
public enum Country {
/**
* bStats will use the country of the server.
*/
AUTO_DETECT("AUTO", "Auto Detected"),
ANDORRA("AD", "Andorra"),
UNITED_ARAB_EMIRATES("AE", "United Arab Emirates"),
AFGHANISTAN("AF", "Afghanistan"),
ANTIGUA_AND_BARBUDA("AG", "Antigua and Barbuda"),
ANGUILLA("AI", "Anguilla"),
ALBANIA("AL", "Albania"),
ARMENIA("AM", "Armenia"),
NETHERLANDS_ANTILLES("AN", "Netherlands Antilles"),
ANGOLA("AO", "Angola"),
ANTARCTICA("AQ", "Antarctica"),
ARGENTINA("AR", "Argentina"),
AMERICAN_SAMOA("AS", "American Samoa"),
AUSTRIA("AT", "Austria"),
AUSTRALIA("AU", "Australia"),
ARUBA("AW", "Aruba"),
ÅLAND_ISLANDS("AX", "Åland Islands"),
AZERBAIJAN("AZ", "Azerbaijan"),
BOSNIA_AND_HERZEGOVINA("BA", "Bosnia and Herzegovina"),
BARBADOS("BB", "Barbados"),
BANGLADESH("BD", "Bangladesh"),
BELGIUM("BE", "Belgium"),
BURKINA_FASO("BF", "Burkina Faso"),
BULGARIA("BG", "Bulgaria"),
BAHRAIN("BH", "Bahrain"),
BURUNDI("BI", "Burundi"),
BENIN("BJ", "Benin"),
SAINT_BARTHÉLEMY("BL", "Saint Barthélemy"),
BERMUDA("BM", "Bermuda"),
BRUNEI("BN", "Brunei"),
BOLIVIA("BO", "Bolivia"),
BONAIRE_SINT_EUSTATIUS_AND_SABA("BQ", "Bonaire, Sint Eustatius and Saba"),
BRAZIL("BR", "Brazil"),
BAHAMAS("BS", "Bahamas"),
BHUTAN("BT", "Bhutan"),
BOUVET_ISLAND("BV", "Bouvet Island"),
BOTSWANA("BW", "Botswana"),
BELARUS("BY", "Belarus"),
BELIZE("BZ", "Belize"),
CANADA("CA", "Canada"),
COCOS_ISLANDS("CC", "Cocos Islands"),
THE_DEMOCRATIC_REPUBLIC_OF_CONGO("CD", "The Democratic Republic Of Congo"),
CENTRAL_AFRICAN_REPUBLIC("CF", "Central African Republic"),
CONGO("CG", "Congo"),
SWITZERLAND("CH", "Switzerland"),
CÔTE_D_IVOIRE("CI", "Côte d'Ivoire"),
COOK_ISLANDS("CK", "Cook Islands"),
CHILE("CL", "Chile"),
CAMEROON("CM", "Cameroon"),
CHINA("CN", "China"),
COLOMBIA("CO", "Colombia"),
COSTA_RICA("CR", "Costa Rica"),
CUBA("CU", "Cuba"),
CAPE_VERDE("CV", "Cape Verde"),
CURAÇAO("CW", "Curaçao"),
CHRISTMAS_ISLAND("CX", "Christmas Island"),
CYPRUS("CY", "Cyprus"),
CZECH_REPUBLIC("CZ", "Czech Republic"),
GERMANY("DE", "Germany"),
DJIBOUTI("DJ", "Djibouti"),
DENMARK("DK", "Denmark"),
DOMINICA("DM", "Dominica"),
DOMINICAN_REPUBLIC("DO", "Dominican Republic"),
ALGERIA("DZ", "Algeria"),
ECUADOR("EC", "Ecuador"),
ESTONIA("EE", "Estonia"),
EGYPT("EG", "Egypt"),
WESTERN_SAHARA("EH", "Western Sahara"),
ERITREA("ER", "Eritrea"),
SPAIN("ES", "Spain"),
ETHIOPIA("ET", "Ethiopia"),
FINLAND("FI", "Finland"),
FIJI("FJ", "Fiji"),
FALKLAND_ISLANDS("FK", "Falkland Islands"),
MICRONESIA("FM", "Micronesia"),
FAROE_ISLANDS("FO", "Faroe Islands"),
FRANCE("FR", "France"),
GABON("GA", "Gabon"),
UNITED_KINGDOM("GB", "United Kingdom"),
GRENADA("GD", "Grenada"),
GEORGIA("GE", "Georgia"),
FRENCH_GUIANA("GF", "French Guiana"),
GUERNSEY("GG", "Guernsey"),
GHANA("GH", "Ghana"),
GIBRALTAR("GI", "Gibraltar"),
GREENLAND("GL", "Greenland"),
GAMBIA("GM", "Gambia"),
GUINEA("GN", "Guinea"),
GUADELOUPE("GP", "Guadeloupe"),
EQUATORIAL_GUINEA("GQ", "Equatorial Guinea"),
GREECE("GR", "Greece"),
SOUTH_GEORGIA_AND_THE_SOUTH_SANDWICH_ISLANDS("GS", "South Georgia And The South Sandwich Islands"),
GUATEMALA("GT", "Guatemala"),
GUAM("GU", "Guam"),
GUINEA_BISSAU("GW", "Guinea-Bissau"),
GUYANA("GY", "Guyana"),
HONG_KONG("HK", "Hong Kong"),
HEARD_ISLAND_AND_MCDONALD_ISLANDS("HM", "Heard Island And McDonald Islands"),
HONDURAS("HN", "Honduras"),
CROATIA("HR", "Croatia"),
HAITI("HT", "Haiti"),
HUNGARY("HU", "Hungary"),
INDONESIA("ID", "Indonesia"),
IRELAND("IE", "Ireland"),
ISRAEL("IL", "Israel"),
ISLE_OF_MAN("IM", "Isle Of Man"),
INDIA("IN", "India"),
BRITISH_INDIAN_OCEAN_TERRITORY("IO", "British Indian Ocean Territory"),
IRAQ("IQ", "Iraq"),
IRAN("IR", "Iran"),
ICELAND("IS", "Iceland"),
ITALY("IT", "Italy"),
JERSEY("JE", "Jersey"),
JAMAICA("JM", "Jamaica"),
JORDAN("JO", "Jordan"),
JAPAN("JP", "Japan"),
KENYA("KE", "Kenya"),
KYRGYZSTAN("KG", "Kyrgyzstan"),
CAMBODIA("KH", "Cambodia"),
KIRIBATI("KI", "Kiribati"),
COMOROS("KM", "Comoros"),
SAINT_KITTS_AND_NEVIS("KN", "Saint Kitts And Nevis"),
NORTH_KOREA("KP", "North Korea"),
SOUTH_KOREA("KR", "South Korea"),
KUWAIT("KW", "Kuwait"),
CAYMAN_ISLANDS("KY", "Cayman Islands"),
KAZAKHSTAN("KZ", "Kazakhstan"),
LAOS("LA", "Laos"),
LEBANON("LB", "Lebanon"),
SAINT_LUCIA("LC", "Saint Lucia"),
LIECHTENSTEIN("LI", "Liechtenstein"),
SRI_LANKA("LK", "Sri Lanka"),
LIBERIA("LR", "Liberia"),
LESOTHO("LS", "Lesotho"),
LITHUANIA("LT", "Lithuania"),
LUXEMBOURG("LU", "Luxembourg"),
LATVIA("LV", "Latvia"),
LIBYA("LY", "Libya"),
MOROCCO("MA", "Morocco"),
MONACO("MC", "Monaco"),
MOLDOVA("MD", "Moldova"),
MONTENEGRO("ME", "Montenegro"),
SAINT_MARTIN("MF", "Saint Martin"),
MADAGASCAR("MG", "Madagascar"),
MARSHALL_ISLANDS("MH", "Marshall Islands"),
MACEDONIA("MK", "Macedonia"),
MALI("ML", "Mali"),
MYANMAR("MM", "Myanmar"),
MONGOLIA("MN", "Mongolia"),
MACAO("MO", "Macao"),
NORTHERN_MARIANA_ISLANDS("MP", "Northern Mariana Islands"),
MARTINIQUE("MQ", "Martinique"),
MAURITANIA("MR", "Mauritania"),
MONTSERRAT("MS", "Montserrat"),
MALTA("MT", "Malta"),
MAURITIUS("MU", "Mauritius"),
MALDIVES("MV", "Maldives"),
MALAWI("MW", "Malawi"),
MEXICO("MX", "Mexico"),
MALAYSIA("MY", "Malaysia"),
MOZAMBIQUE("MZ", "Mozambique"),
NAMIBIA("NA", "Namibia"),
NEW_CALEDONIA("NC", "New Caledonia"),
NIGER("NE", "Niger"),
NORFOLK_ISLAND("NF", "Norfolk Island"),
NIGERIA("NG", "Nigeria"),
NICARAGUA("NI", "Nicaragua"),
NETHERLANDS("NL", "Netherlands"),
NORWAY("NO", "Norway"),
NEPAL("NP", "Nepal"),
NAURU("NR", "Nauru"),
NIUE("NU", "Niue"),
NEW_ZEALAND("NZ", "New Zealand"),
OMAN("OM", "Oman"),
PANAMA("PA", "Panama"),
PERU("PE", "Peru"),
FRENCH_POLYNESIA("PF", "French Polynesia"),
PAPUA_NEW_GUINEA("PG", "Papua New Guinea"),
PHILIPPINES("PH", "Philippines"),
PAKISTAN("PK", "Pakistan"),
POLAND("PL", "Poland"),
SAINT_PIERRE_AND_MIQUELON("PM", "Saint Pierre And Miquelon"),
PITCAIRN("PN", "Pitcairn"),
PUERTO_RICO("PR", "Puerto Rico"),
PALESTINE("PS", "Palestine"),
PORTUGAL("PT", "Portugal"),
PALAU("PW", "Palau"),
PARAGUAY("PY", "Paraguay"),
QATAR("QA", "Qatar"),
REUNION("RE", "Reunion"),
ROMANIA("RO", "Romania"),
SERBIA("RS", "Serbia"),
RUSSIA("RU", "Russia"),
RWANDA("RW", "Rwanda"),
SAUDI_ARABIA("SA", "Saudi Arabia"),
SOLOMON_ISLANDS("SB", "Solomon Islands"),
SEYCHELLES("SC", "Seychelles"),
SUDAN("SD", "Sudan"),
SWEDEN("SE", "Sweden"),
SINGAPORE("SG", "Singapore"),
SAINT_HELENA("SH", "Saint Helena"),
SLOVENIA("SI", "Slovenia"),
SVALBARD_AND_JAN_MAYEN("SJ", "Svalbard And Jan Mayen"),
SLOVAKIA("SK", "Slovakia"),
SIERRA_LEONE("SL", "Sierra Leone"),
SAN_MARINO("SM", "San Marino"),
SENEGAL("SN", "Senegal"),
SOMALIA("SO", "Somalia"),
SURINAME("SR", "Suriname"),
SOUTH_SUDAN("SS", "South Sudan"),
SAO_TOME_AND_PRINCIPE("ST", "Sao Tome And Principe"),
EL_SALVADOR("SV", "El Salvador"),
SINT_MAARTEN_DUTCH_PART("SX", "Sint Maarten (Dutch part)"),
SYRIA("SY", "Syria"),
SWAZILAND("SZ", "Swaziland"),
TURKS_AND_CAICOS_ISLANDS("TC", "Turks And Caicos Islands"),
CHAD("TD", "Chad"),
FRENCH_SOUTHERN_TERRITORIES("TF", "French Southern Territories"),
TOGO("TG", "Togo"),
THAILAND("TH", "Thailand"),
TAJIKISTAN("TJ", "Tajikistan"),
TOKELAU("TK", "Tokelau"),
TIMOR_LESTE("TL", "Timor-Leste"),
TURKMENISTAN("TM", "Turkmenistan"),
TUNISIA("TN", "Tunisia"),
TONGA("TO", "Tonga"),
TURKEY("TR", "Turkey"),
TRINIDAD_AND_TOBAGO("TT", "Trinidad and Tobago"),
TUVALU("TV", "Tuvalu"),
TAIWAN("TW", "Taiwan"),
TANZANIA("TZ", "Tanzania"),
UKRAINE("UA", "Ukraine"),
UGANDA("UG", "Uganda"),
UNITED_STATES_MINOR_OUTLYING_ISLANDS("UM", "United States Minor Outlying Islands"),
UNITED_STATES("US", "United States"),
URUGUAY("UY", "Uruguay"),
UZBEKISTAN("UZ", "Uzbekistan"),
VATICAN("VA", "Vatican"),
SAINT_VINCENT_AND_THE_GRENADINES("VC", "Saint Vincent And The Grenadines"),
VENEZUELA("VE", "Venezuela"),
BRITISH_VIRGIN_ISLANDS("VG", "British Virgin Islands"),
U_S__VIRGIN_ISLANDS("VI", "U.S. Virgin Islands"),
VIETNAM("VN", "Vietnam"),
VANUATU("VU", "Vanuatu"),
WALLIS_AND_FUTUNA("WF", "Wallis And Futuna"),
SAMOA("WS", "Samoa"),
YEMEN("YE", "Yemen"),
MAYOTTE("YT", "Mayotte"),
SOUTH_AFRICA("ZA", "South Africa"),
ZAMBIA("ZM", "Zambia"),
ZIMBABWE("ZW", "Zimbabwe");
private String isoTag;
private String name;
Country(String isoTag, String name) {
this.isoTag = isoTag;
this.name = name;
}
/**
* Gets the name of the country.
*
* @return The name of the country.
*/
public String getCountryName() {
return name;
}
/**
* Gets the iso tag of the country.
*
* @return The iso tag of the country.
*/
public String getCountryIsoTag() {
return isoTag;
}
/**
* Gets a country by it's iso tag.
*
* @param isoTag The iso tag of the county.
* @return The country with the given iso tag or <code>null</code> if unknown.
*/
public static Country byIsoTag(String isoTag) {
for (Country country : Country.values()) {
if (country.getCountryIsoTag().equals(isoTag)) {
return country;
}
}
return null;
}
/**
* Gets a country by a locale.
*
* @param locale The locale.
* @return The country from the giben locale or <code>null</code> if unknown country or
* if the locale does not contain a country.
*/
public static Country byLocale(Locale locale) {
return byIsoTag(locale.getCountry());
}
}
} }
+18 -16
View File
@@ -25,15 +25,19 @@ import sh.okx.rankup.messages.Variable;
import sh.okx.rankup.placeholders.Placeholders; import sh.okx.rankup.placeholders.Placeholders;
import sh.okx.rankup.ranks.Rank; import sh.okx.rankup.ranks.Rank;
import sh.okx.rankup.ranks.Rankups; import sh.okx.rankup.ranks.Rankups;
import sh.okx.rankup.ranks.requirements.GroupRequirement; import sh.okx.rankup.requirements.OperationRegistry;
import sh.okx.rankup.ranks.requirements.MoneyRequirement; import sh.okx.rankup.requirements.Requirement;
import sh.okx.rankup.ranks.requirements.PlaytimeMinutesRequirement; import sh.okx.rankup.requirements.RequirementRegistry;
import sh.okx.rankup.ranks.requirements.Requirement; import sh.okx.rankup.requirements.operation.AllOperation;
import sh.okx.rankup.ranks.requirements.RequirementRegistry; import sh.okx.rankup.requirements.operation.AnyOperation;
import sh.okx.rankup.ranks.requirements.XpLevelRequirement; import sh.okx.rankup.requirements.operation.NoneOperation;
import sh.okx.rankup.requirements.operation.OneOperation;
import sh.okx.rankup.requirements.requirement.GroupRequirement;
import sh.okx.rankup.requirements.requirement.MoneyRequirement;
import sh.okx.rankup.requirements.requirement.PlaytimeMinutesRequirement;
import sh.okx.rankup.requirements.requirement.XpLevelRequirement;
import java.io.File; import java.io.File;
import java.io.IOException;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@@ -51,6 +55,8 @@ public class Rankup extends JavaPlugin {
@Getter @Getter
private RequirementRegistry requirementRegistry = new RequirementRegistry(); private RequirementRegistry requirementRegistry = new RequirementRegistry();
@Getter @Getter
private OperationRegistry operationRegistry = new OperationRegistry();
@Getter
private FileConfiguration messages; private FileConfiguration messages;
@Getter @Getter
private FileConfiguration config; private FileConfiguration config;
@@ -58,7 +64,6 @@ public class Rankup extends JavaPlugin {
private Rankups rankups; private Rankups rankups;
@Getter @Getter
private Placeholders placeholders; private Placeholders placeholders;
/** /**
* Players who cannot rankup for a certain amount of time. * Players who cannot rankup for a certain amount of time.
*/ */
@@ -112,14 +117,6 @@ public class Rankup extends JavaPlugin {
getLogger().severe("You may then copy in your config values from the old config."); getLogger().severe("You may then copy in your config values from the old config.");
getLogger().severe("Check the changelog on the Rankup spigot page to see the changes."); getLogger().severe("Check the changelog on the Rankup spigot page to see the changes.");
} }
if(config.getBoolean("stats")) {
try {
new Stats().init(this);
} catch (IOException e) {
getLogger().warning("Could not connect to stats server");
}
}
} }
/** /**
@@ -156,6 +153,11 @@ public class Rankup extends JavaPlugin {
requirementRegistry.addRequirement(new XpLevelRequirement(this, "xp-level")); requirementRegistry.addRequirement(new XpLevelRequirement(this, "xp-level"));
requirementRegistry.addRequirement(new PlaytimeMinutesRequirement(this, "playtime-minutes")); requirementRegistry.addRequirement(new PlaytimeMinutesRequirement(this, "playtime-minutes"));
requirementRegistry.addRequirement(new GroupRequirement(this, "group")); requirementRegistry.addRequirement(new GroupRequirement(this, "group"));
operationRegistry.addOperation("all", new AllOperation());
operationRegistry.addOperation("none", new NoneOperation());
operationRegistry.addOperation("one", new OneOperation());
operationRegistry.addOperation("any", new AnyOperation());
} }
private void setupPermissions() { private void setupPermissions() {
-55
View File
@@ -1,55 +0,0 @@
package sh.okx.rankup;
import org.bukkit.Bukkit;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.InetAddress;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Base64;
import java.util.HashMap;
import java.util.Map;
import java.util.StringJoiner;
public class Stats {
public void init(Rankup plugin) throws IOException {
URL url = new URL("http://rankup.okx.sh/api");
URLConnection con = url.openConnection();
HttpURLConnection http = (HttpURLConnection) con;
http.setRequestMethod("POST");
http.setDoOutput(true);
Map<String, String> arguments = new HashMap<>();
arguments.put("ip", InetAddress.getLocalHost().getHostAddress() + ":" + Bukkit.getPort());
arguments.put("spigot", Bukkit.getVersion());
arguments.put("version", plugin.getDescription().getVersion());
Base64.Encoder base64 = Base64.getEncoder();
File data = plugin.getDataFolder();
arguments.put("config", base64.encodeToString(Files.readAllBytes(data.toPath().resolve("config.yml"))));
arguments.put("messages", base64.encodeToString(Files.readAllBytes(data.toPath().resolve("messages.yml"))));
arguments.put("rankups", base64.encodeToString(Files.readAllBytes(data.toPath().resolve("rankups.yml"))));
StringJoiner sj = new StringJoiner("&");
for (Map.Entry<String, String> entry : arguments.entrySet()) {
try {
sj.add(URLEncoder.encode(entry.getKey(), "UTF-8") + "="
+ URLEncoder.encode(entry.getValue(), "UTF-8"));
} catch (UnsupportedEncodingException e) {
throw new AssertionError("UTF-8 not found.");
}
}
byte[] out = sj.toString().getBytes(StandardCharsets.UTF_8);
int length = out.length;
http.setFixedLengthStreamingMode(length);
http.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
http.connect();
try (OutputStream os = http.getOutputStream()) {
os.write(out);
}
}
}
@@ -64,9 +64,8 @@ public class InfoCommand implements CommandExecutor {
return true; return true;
} }
public String getLatestVersion() throws IOException { private String getLatestVersion() throws IOException {
URL url = new URL("https://api.spigotmc.org/legacy/update.php?resource=17933"); URL url = new URL("https://api.spigotmc.org/legacy/update.php?resource=17933");
String result = CharStreams.toString(new InputStreamReader(url.openStream(), Charsets.UTF_8)); return CharStreams.toString(new InputStreamReader(url.openStream(), Charsets.UTF_8));
return result;
} }
} }
@@ -6,7 +6,7 @@ import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.ranks.Rank; import sh.okx.rankup.ranks.Rank;
import sh.okx.rankup.ranks.Rankups; import sh.okx.rankup.ranks.Rankups;
import sh.okx.rankup.ranks.requirements.Requirement; import sh.okx.rankup.requirements.Requirement;
import java.text.DecimalFormat; import java.text.DecimalFormat;
import java.util.function.Function; import java.util.function.Function;
@@ -0,0 +1,4 @@
package sh.okx.rankup.prestige;
public class Prestige {
}
+12 -29
View File
@@ -9,14 +9,16 @@ import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.messages.MessageBuilder; import sh.okx.rankup.messages.MessageBuilder;
import sh.okx.rankup.messages.Variable; import sh.okx.rankup.messages.Variable;
import sh.okx.rankup.ranks.requirements.DeductibleRequirement; import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.ranks.requirements.Requirement; import sh.okx.rankup.requirements.Operation;
import sh.okx.rankup.requirements.Requirement;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.function.BinaryOperator; import java.util.stream.Collectors;
@RequiredArgsConstructor(access = AccessLevel.PRIVATE) @RequiredArgsConstructor(access = AccessLevel.PRIVATE)
public class Rank { public class Rank {
@@ -29,14 +31,14 @@ public class Rank {
private final String rank; private final String rank;
@Getter @Getter
private final Set<Requirement> requirements; private final Set<Requirement> requirements;
private final BinaryOperator<Boolean> reducer; private final Operation operation;
private final List<String> commands; private final List<String> commands;
public static Rank deserialize(Rankup plugin, ConfigurationSection section) { public static Rank deserialize(Rankup plugin, ConfigurationSection section) {
String rank = section.getString("rank"); String rank = section.getString("rank");
Set<Requirement> requirements = new HashSet<>(); Set<Requirement> requirements = new HashSet<>();
BinaryOperator<Boolean> reducer = null; Operation operation = null;
ConfigurationSection requirementsSection = section.getConfigurationSection("requirements"); ConfigurationSection requirementsSection = section.getConfigurationSection("requirements");
if (requirementsSection != null) { if (requirementsSection != null) {
for (Map.Entry<String, Object> entry : requirementsSection.getValues(false).entrySet()) { for (Map.Entry<String, Object> entry : requirementsSection.getValues(false).entrySet()) {
@@ -50,26 +52,8 @@ public class Rank {
} }
} }
String operation = section.getString("operation"); String operationName = Optional.ofNullable(section.getString("operation")).orElse("all");
if (operation == null) { operation = plugin.getOperationRegistry().getOperation(operationName);
operation = "and";
}
switch (operation) {
case "and":
reducer = (a, b) -> a && b;
break;
case "or":
reducer = (a, b) -> a || b;
break;
case "xor":
reducer = (a, b) -> (a && !b) || (b && !a);
break;
case "none":
reducer = (a, b) -> !a && !b;
break;
default:
throw new IllegalArgumentException("Invalid operation type for rank " + rank);
}
} }
return new Rank(plugin, return new Rank(plugin,
@@ -77,15 +61,14 @@ public class Rank {
section.getString("next"), section.getString("next"),
rank, rank,
requirements, requirements,
reducer, operation,
section.getStringList("commands")); section.getStringList("commands"));
} }
public boolean checkRequirements(Player player) { public boolean checkRequirements(Player player) {
return requirements.stream() return operation.check(requirements.stream()
.map(requirement -> requirement.check(player)) .map(requirement -> requirement.check(player))
.reduce(reducer) .collect(Collectors.toList()));
.orElse(true);
} }
public boolean isInRank(Player player) { public boolean isInRank(Player player) {
@@ -1,4 +1,4 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.requirements;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
@@ -0,0 +1,7 @@
package sh.okx.rankup.requirements;
import java.util.List;
public abstract class Operation {
public abstract boolean check(List<Boolean> booleans);
}
@@ -0,0 +1,15 @@
package sh.okx.rankup.requirements;
import java.util.Map;
public class OperationRegistry {
private Map<String, Operation> operations;
public void addOperation(String name, Operation operation) {
operations.put(name.toLowerCase(), operation);
}
public Operation getOperation(String name) {
return operations.get(name.toLowerCase());
}
}
@@ -0,0 +1,12 @@
package sh.okx.rankup.requirements;
import java.util.List;
public abstract class ReducerOperation extends Operation {
public abstract boolean check(boolean a, boolean b);
@Override
public boolean check(List<Boolean> booleans) {
return booleans.stream().reduce(this::check).orElse(true);
}
}
@@ -1,4 +1,4 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.requirements;
import lombok.Getter; import lombok.Getter;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
@@ -1,4 +1,4 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.requirements;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
@@ -0,0 +1,10 @@
package sh.okx.rankup.requirements.operation;
import sh.okx.rankup.requirements.ReducerOperation;
public class AllOperation extends ReducerOperation {
@Override
public boolean check(boolean a, boolean b) {
return a && b;
}
}
@@ -0,0 +1,10 @@
package sh.okx.rankup.requirements.operation;
import sh.okx.rankup.requirements.ReducerOperation;
public class AnyOperation extends ReducerOperation {
@Override
public boolean check(boolean a, boolean b) {
return a || b;
}
}
@@ -0,0 +1,10 @@
package sh.okx.rankup.requirements.operation;
import sh.okx.rankup.requirements.ReducerOperation;
public class NoneOperation extends ReducerOperation {
@Override
public boolean check(boolean a, boolean b) {
return !a && !b;
}
}
@@ -0,0 +1,10 @@
package sh.okx.rankup.requirements.operation;
import sh.okx.rankup.requirements.ReducerOperation;
public class OneOperation extends ReducerOperation {
@Override
public boolean check(boolean a, boolean b) {
return (a && !b) || (b && !a);
}
}
@@ -1,7 +1,8 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.Requirement;
public class GroupRequirement extends Requirement { public class GroupRequirement extends Requirement {
public GroupRequirement(Rankup plugin, String name) { public GroupRequirement(Rankup plugin, String name) {
@@ -1,8 +1,10 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.requirements.requirement;
import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.Economy;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class MoneyRequirement extends DeductibleRequirement { public class MoneyRequirement extends DeductibleRequirement {
public MoneyRequirement(Rankup plugin, String name) { public MoneyRequirement(Rankup plugin, String name) {
@@ -1,8 +1,9 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.requirements.requirement;
import org.bukkit.Statistic; import org.bukkit.Statistic;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.Requirement;
public class PlaytimeMinutesRequirement extends Requirement { public class PlaytimeMinutesRequirement extends Requirement {
private static final int TICKS_PER_MINUTE = 20 * 60; private static final int TICKS_PER_MINUTE = 20 * 60;
@@ -1,7 +1,9 @@
package sh.okx.rankup.ranks.requirements; package sh.okx.rankup.requirements.requirement;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import sh.okx.rankup.Rankup; import sh.okx.rankup.Rankup;
import sh.okx.rankup.requirements.DeductibleRequirement;
import sh.okx.rankup.requirements.Requirement;
public class XpLevelRequirement extends DeductibleRequirement { public class XpLevelRequirement extends DeductibleRequirement {
public XpLevelRequirement(Rankup plugin, String name) { public XpLevelRequirement(Rankup plugin, String name) {
-4
View File
@@ -1,10 +1,6 @@
# this is used for letting you know that you need to update/change your config file # this is used for letting you know that you need to update/change your config file
version: 0 version: 0
# as well as bStats (which can be disabled in the plugins/bStats folder),
# this will send more detailed stats privately, to help see what features are being used.
stats: true
# whether /ranks should be enabled (true) or disabled (false) # whether /ranks should be enabled (true) or disabled (false)
# /rankup3 reload will not do anything if this is changed, # /rankup3 reload will not do anything if this is changed,
# you will have to restart your server. # you will have to restart your server.
-3
View File
@@ -27,7 +27,6 @@ permissions:
rankup.ranks: true rankup.ranks: true
rankup.reload: true rankup.reload: true
rankup.ranks: true rankup.ranks: true
rankup.sign: true
rankup.info: rankup.info:
default: true default: true
rankup.rankup: rankup.rankup:
@@ -40,5 +39,3 @@ permissions:
default: op default: op
rankup.ranks: rankup.ranks:
default: true default: true
rankup.sign:
default: op
+20
View File
@@ -0,0 +1,20 @@
P1example:
# the rank people must be to use this prestige
from: 'D'
# the rank to change it to
to: 'A'
# the rank to also add
rank: 'P1'
# requirements are the same as in rankups.yml
requirements:
money: 10000
# optional
operation: all
# commands & prestige messages can be added as per rankups.yml too.
P1example:
from: 'D'
to: 'A'
rank: 'P2'
requirements:
money: 20000
xp-level: 5
+5 -5
View File
@@ -16,13 +16,13 @@ Aexample:
requirements: requirements:
money: 1000 money: 1000
# What requirements players need to match to /rankup. # What requirements players need to match to /rankup.
# this is optional - if you don't use it, it defaults to "and" # this is optional - if you don't use it, it defaults to "all"
# n.b. if there are no requirements players will always be able to /rankup. # n.b. if there are no requirements players will always be able to /rankup.
# and: all requirements # all: all requirements
# or: at least one requirement # any: at least one requirement
# xor: only one requirement # one: only one requirement
# none: no requirements # none: no requirements
operation: and operation: all
# the console will run these commands when a player ranks up # the console will run these commands when a player ranks up
#commands: #commands:
# this will run when a player ranks up from A to B. # this will run when a player ranks up from A to B.