mirror of
https://github.com/plan-player-analytics/Plan.git
synced 2025-01-18 14:11:32 +01:00
Add some missing javadocs to not generate warnings
This commit is contained in:
parent
6fa2d0ab87
commit
bc4aef8b2b
@ -64,6 +64,9 @@ public interface CapabilityService {
|
|||||||
return Capability.getByName(capabilityName).isPresent();
|
return Capability.getByName(capabilityName).isPresent();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Singleton holder for listeners.
|
||||||
|
*/
|
||||||
class ListHolder {
|
class ListHolder {
|
||||||
static final AtomicReference<List<Consumer<Boolean>>> enableListeners = new AtomicReference<>(
|
static final AtomicReference<List<Consumer<Boolean>>> enableListeners = new AtomicReference<>(
|
||||||
new CopyOnWriteArrayList<>()
|
new CopyOnWriteArrayList<>()
|
||||||
|
@ -89,7 +89,7 @@ public interface ComponentService {
|
|||||||
* Converts the given input into a {@link Component}.
|
* Converts the given input into a {@link Component}.
|
||||||
* Input example {@code §ctext}.
|
* Input example {@code §ctext}.
|
||||||
*
|
*
|
||||||
* @param legacy the input legacy
|
* @param legacy the input legacy
|
||||||
* @param character the character to use as the color prefix, usually {@code §}.
|
* @param character the character to use as the color prefix, usually {@code §}.
|
||||||
* @return a {@link Component}
|
* @return a {@link Component}
|
||||||
* @see #fromLegacy(String)
|
* @see #fromLegacy(String)
|
||||||
@ -115,7 +115,7 @@ public interface ComponentService {
|
|||||||
* Input example: {@code &#rrggbbtext}.
|
* Input example: {@code &#rrggbbtext}.
|
||||||
*
|
*
|
||||||
* @param adventureLegacy the input adventure legacy
|
* @param adventureLegacy the input adventure legacy
|
||||||
* @param character the character to use as the color prefix, usually {@code &}.
|
* @param character the character to use as the color prefix, usually {@code &}.
|
||||||
* @return a {@link Component}
|
* @return a {@link Component}
|
||||||
* @see #fromAdventureLegacy(String)
|
* @see #fromAdventureLegacy(String)
|
||||||
* @see Component#SECTION
|
* @see Component#SECTION
|
||||||
@ -139,7 +139,7 @@ public interface ComponentService {
|
|||||||
* Input example: {@code §x§r§r§g§g§b§btext}.
|
* Input example: {@code §x§r§r§g§g§b§btext}.
|
||||||
*
|
*
|
||||||
* @param bungeeLegacy the input bungee legacy
|
* @param bungeeLegacy the input bungee legacy
|
||||||
* @param character the character to use as the color prefix, usually {@code §}.
|
* @param character the character to use as the color prefix, usually {@code §}.
|
||||||
* @return a {@link Component}
|
* @return a {@link Component}
|
||||||
* @see Component#SECTION
|
* @see Component#SECTION
|
||||||
* @see Component#AMPERSAND
|
* @see Component#AMPERSAND
|
||||||
@ -164,6 +164,9 @@ public interface ComponentService {
|
|||||||
*/
|
*/
|
||||||
Component fromJson(String json);
|
Component fromJson(String json);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Singleton holder for ComponentService.
|
||||||
|
*/
|
||||||
class Holder {
|
class Holder {
|
||||||
static final AtomicReference<ComponentService> service = new AtomicReference<>();
|
static final AtomicReference<ComponentService> service = new AtomicReference<>();
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* PageExtension API for extending the webserver and the website.
|
* PageExtension API for extending the webserver and the website.
|
||||||
*
|
|
||||||
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-PageExtension-API">Documentation</a>
|
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-PageExtension-API">Documentation</a>
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.delivery.web;
|
package com.djrapitops.plan.delivery.web;
|
@ -46,6 +46,11 @@ public final class CompositeResolver implements Resolver {
|
|||||||
this.resolvers = new ArrayList<>();
|
this.resolvers = new ArrayList<>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new builder for a .
|
||||||
|
*
|
||||||
|
* @return a builder.
|
||||||
|
*/
|
||||||
public static CompositeResolver.Builder builder() {
|
public static CompositeResolver.Builder builder() {
|
||||||
return new Builder();
|
return new Builder();
|
||||||
}
|
}
|
||||||
@ -100,6 +105,9 @@ public final class CompositeResolver implements Resolver {
|
|||||||
return getResolver(forThis.getPath()).map(resolver -> resolver.requiresAuth(forThis)).orElse(true);
|
return getResolver(forThis.getPath()).map(resolver -> resolver.requiresAuth(forThis)).orElse(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builder class for {@link CompositeResolver}.
|
||||||
|
*/
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
private final CompositeResolver composite;
|
private final CompositeResolver composite;
|
||||||
|
|
||||||
@ -132,6 +140,11 @@ public final class CompositeResolver implements Resolver {
|
|||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Build the final result after adding all resolvers.
|
||||||
|
*
|
||||||
|
* @return The {@link CompositeResolver}
|
||||||
|
*/
|
||||||
public CompositeResolver build() {
|
public CompositeResolver build() {
|
||||||
return composite;
|
return composite;
|
||||||
}
|
}
|
||||||
|
@ -22,11 +22,20 @@ import java.util.Optional;
|
|||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Utility class for constructing a {@link Resolver} with Functional Interfaces.
|
||||||
|
*/
|
||||||
public class FunctionalResolverWrapper implements Resolver {
|
public class FunctionalResolverWrapper implements Resolver {
|
||||||
|
|
||||||
private final Function<Request, Optional<Response>> resolver;
|
private final Function<Request, Optional<Response>> resolver;
|
||||||
private final Predicate<Request> accessCheck;
|
private final Predicate<Request> accessCheck;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor.
|
||||||
|
*
|
||||||
|
* @param resolver Function that solves the {@link Request} into an Optional {@link Response}.
|
||||||
|
* @param accessCheck Predicate that checks if {@link Request} is allowed or if 403 Forbidden should be given.
|
||||||
|
*/
|
||||||
public FunctionalResolverWrapper(Function<Request, Optional<Response>> resolver, Predicate<Request> accessCheck) {
|
public FunctionalResolverWrapper(Function<Request, Optional<Response>> resolver, Predicate<Request> accessCheck) {
|
||||||
this.resolver = resolver;
|
this.resolver = resolver;
|
||||||
this.accessCheck = accessCheck;
|
this.accessCheck = accessCheck;
|
||||||
|
@ -72,10 +72,21 @@ public interface Resolver {
|
|||||||
*/
|
*/
|
||||||
Optional<Response> resolve(Request request);
|
Optional<Response> resolve(Request request);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new {@link ResponseBuilder} for a {@link Response}.
|
||||||
|
*
|
||||||
|
* @return a new builder.
|
||||||
|
*/
|
||||||
default ResponseBuilder newResponseBuilder() {
|
default ResponseBuilder newResponseBuilder() {
|
||||||
return Response.builder();
|
return Response.builder();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Used to check if the resolver requires authentication to be used.
|
||||||
|
*
|
||||||
|
* @param request Incoming request that you can use to figure out if authentication is required.
|
||||||
|
* @return true if you want 401 to be given when user has not logged in.
|
||||||
|
*/
|
||||||
default boolean requiresAuth(Request request) {
|
default boolean requiresAuth(Request request) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -33,7 +33,7 @@ public class ResponseBuilder {
|
|||||||
/**
|
/**
|
||||||
* Set MIME Type of the Response.
|
* Set MIME Type of the Response.
|
||||||
*
|
*
|
||||||
* @param mimeType MIME type of the Response https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types
|
* @param mimeType MIME type of the Response <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types">Documentation</a>
|
||||||
* @return this builder.
|
* @return this builder.
|
||||||
* @see MimeType for common MIME types.
|
* @see MimeType for common MIME types.
|
||||||
*/
|
*/
|
||||||
@ -46,7 +46,7 @@ public class ResponseBuilder {
|
|||||||
* <p>
|
* <p>
|
||||||
* Default status code is 200 (OK) if not set.
|
* Default status code is 200 (OK) if not set.
|
||||||
*
|
*
|
||||||
* @param code 1xx, 2xx, 3xx, 4xx, 5xx, https://developer.mozilla.org/en-US/docs/Web/HTTP/Status
|
* @param code 1xx, 2xx, 3xx, 4xx, 5xx, <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Status">Documentation</a>
|
||||||
* @return this builder.
|
* @return this builder.
|
||||||
*/
|
*/
|
||||||
public ResponseBuilder setStatus(int code) {
|
public ResponseBuilder setStatus(int code) {
|
||||||
@ -57,7 +57,7 @@ public class ResponseBuilder {
|
|||||||
/**
|
/**
|
||||||
* Set HTTP Response header.
|
* Set HTTP Response header.
|
||||||
*
|
*
|
||||||
* @param header Key of the header. https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
|
* @param header Key of the header. <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers">Documentation</a>
|
||||||
* @param value Value for the header.
|
* @param value Value for the header.
|
||||||
* @return this builder.
|
* @return this builder.
|
||||||
*/
|
*/
|
||||||
@ -75,7 +75,7 @@ public class ResponseBuilder {
|
|||||||
* Utility method for building redirects.
|
* Utility method for building redirects.
|
||||||
*
|
*
|
||||||
* @param url URL to redirect the client to with 302 Found.
|
* @param url URL to redirect the client to with 302 Found.
|
||||||
* @return https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location
|
* @return <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Location">Documentation</a>
|
||||||
*/
|
*/
|
||||||
public ResponseBuilder redirectTo(String url) {
|
public ResponseBuilder redirectTo(String url) {
|
||||||
return setStatus(302).setHeader("Location", url).setContent(new byte[0]);
|
return setStatus(302).setHeader("Location", url).setContent(new byte[0]);
|
||||||
|
@ -26,6 +26,11 @@ package com.djrapitops.plan.delivery.web.resolver.exception;
|
|||||||
*/
|
*/
|
||||||
public class BadRequestException extends IllegalArgumentException {
|
public class BadRequestException extends IllegalArgumentException {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Default constructor.
|
||||||
|
*
|
||||||
|
* @param message Error message - avoid including any input incoming in the request to prevent XSS.
|
||||||
|
*/
|
||||||
public BadRequestException(String message) {
|
public BadRequestException(String message) {
|
||||||
super(message);
|
super(message);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Classes for implementing functionality with {@link com.djrapitops.plan.delivery.web.ResolverService}.
|
* Classes for implementing functionality with {@link com.djrapitops.plan.delivery.web.ResolverService}.
|
||||||
*
|
|
||||||
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-PageExtension-API#resolverservice">Documentation</a>
|
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-PageExtension-API#resolverservice">Documentation</a>
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.delivery.web.resolver;
|
package com.djrapitops.plan.delivery.web.resolver;
|
@ -43,7 +43,7 @@ public final class Request {
|
|||||||
* @param path Requested path /example/target
|
* @param path Requested path /example/target
|
||||||
* @param query Request parameters ?param=value etc
|
* @param query Request parameters ?param=value etc
|
||||||
* @param user Web user doing the request (if authenticated)
|
* @param user Web user doing the request (if authenticated)
|
||||||
* @param headers Request headers https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
|
* @param headers Request headers <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers">Documentation</a>
|
||||||
* @param requestBody Raw body as bytes, if present
|
* @param requestBody Raw body as bytes, if present
|
||||||
*/
|
*/
|
||||||
public Request(String method, URIPath path, URIQuery query, WebUser user, Map<String, String> headers, byte[] requestBody) {
|
public Request(String method, URIPath path, URIQuery query, WebUser user, Map<String, String> headers, byte[] requestBody) {
|
||||||
@ -57,6 +57,11 @@ public final class Request {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Special constructor that figures out URIPath and URIQuery from "/path/and?query=params" and has no request body.
|
* Special constructor that figures out URIPath and URIQuery from "/path/and?query=params" and has no request body.
|
||||||
|
*
|
||||||
|
* @param method HTTP requst method
|
||||||
|
* @param target The requested path and query, e.g. "/path/and?query=params"
|
||||||
|
* @param user User that made the request
|
||||||
|
* @param headers HTTP request headers
|
||||||
*/
|
*/
|
||||||
public Request(String method, String target, WebUser user, Map<String, String> headers) {
|
public Request(String method, String target, WebUser user, Map<String, String> headers) {
|
||||||
this.method = method;
|
this.method = method;
|
||||||
@ -121,7 +126,7 @@ public final class Request {
|
|||||||
/**
|
/**
|
||||||
* Get a header in the request.
|
* Get a header in the request.
|
||||||
*
|
*
|
||||||
* @param key https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers
|
* @param key <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers">Documentation</a>
|
||||||
* @return Value if it is present in the request.
|
* @return Value if it is present in the request.
|
||||||
*/
|
*/
|
||||||
public Optional<String> getHeader(String key) {
|
public Optional<String> getHeader(String key) {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Classes for implementing functionality with {@link com.djrapitops.plan.delivery.web.ResourceService}.
|
* Classes for implementing functionality with {@link com.djrapitops.plan.delivery.web.ResourceService}.
|
||||||
*
|
|
||||||
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-PageExtension-API#resourceservice">Documentation</a>
|
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-PageExtension-API#resourceservice">Documentation</a>
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.delivery.web.resource;
|
package com.djrapitops.plan.delivery.web.resource;
|
@ -113,6 +113,7 @@ public interface DataExtension {
|
|||||||
* <p>
|
* <p>
|
||||||
* Requires Capability DATA_EXTENSION_BUILDER_API
|
* Requires Capability DATA_EXTENSION_BUILDER_API
|
||||||
*
|
*
|
||||||
|
* @param text Text that is displayed next to the value.
|
||||||
* @return new builder.
|
* @return new builder.
|
||||||
*/
|
*/
|
||||||
default ValueBuilder valueBuilder(String text) {
|
default ValueBuilder valueBuilder(String text) {
|
||||||
|
@ -81,6 +81,9 @@ public interface ExtensionService {
|
|||||||
*/
|
*/
|
||||||
void unregister(DataExtension extension);
|
void unregister(DataExtension extension);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Singleton holder for {@link ExtensionService}.
|
||||||
|
*/
|
||||||
class Holder {
|
class Holder {
|
||||||
static final AtomicReference<ExtensionService> service = new AtomicReference<>();
|
static final AtomicReference<ExtensionService> service = new AtomicReference<>();
|
||||||
|
|
||||||
|
@ -42,6 +42,12 @@ public enum FormatType {
|
|||||||
*/
|
*/
|
||||||
NONE;
|
NONE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a format type by the enum name without exception.
|
||||||
|
*
|
||||||
|
* @param name FormatType#name()
|
||||||
|
* @return Optional if the format type is found by that name, empty if not found.
|
||||||
|
*/
|
||||||
public static Optional<FormatType> getByName(String name) {
|
public static Optional<FormatType> getByName(String name) {
|
||||||
if (name == null) {
|
if (name == null) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
@ -51,4 +57,5 @@ public enum FormatType {
|
|||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
@ -30,6 +30,11 @@ package com.djrapitops.plan.extension;
|
|||||||
*/
|
*/
|
||||||
public interface Group {
|
public interface Group {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the name of the group.
|
||||||
|
*
|
||||||
|
* @return Name of the group given by a {@link com.djrapitops.plan.extension.annotation.GroupProvider}, e.g. "Miner"
|
||||||
|
*/
|
||||||
String getGroupName();
|
String getGroupName();
|
||||||
|
|
||||||
}
|
}
|
@ -89,7 +89,7 @@ public @interface BooleanProvider {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -98,7 +98,7 @@ public @interface BooleanProvider {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -76,7 +76,7 @@ public @interface ComponentProvider {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -85,7 +85,7 @@ public @interface ComponentProvider {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -67,7 +67,7 @@ public @interface DoubleProvider {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -76,7 +76,7 @@ public @interface DoubleProvider {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -62,7 +62,7 @@ public @interface GroupProvider {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -71,7 +71,7 @@ public @interface GroupProvider {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -39,10 +39,18 @@ public @interface InvalidateMethod {
|
|||||||
*/
|
*/
|
||||||
String value();
|
String value();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Multiple {@link InvalidateMethod} annotations are supported per class.
|
||||||
|
*/
|
||||||
@Retention(RetentionPolicy.RUNTIME)
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
@Target(ElementType.TYPE)
|
@Target(ElementType.TYPE)
|
||||||
@interface Multiple {
|
@interface Multiple {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* All the annotations.
|
||||||
|
*
|
||||||
|
* @return All InvalidateMethod annotations in the class.
|
||||||
|
*/
|
||||||
InvalidateMethod[] value();
|
InvalidateMethod[] value();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -79,7 +79,7 @@ public @interface NumberProvider {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -88,7 +88,7 @@ public @interface NumberProvider {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -70,7 +70,7 @@ public @interface PercentageProvider {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -79,7 +79,7 @@ public @interface PercentageProvider {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -44,7 +44,7 @@ public @interface PluginInfo {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -53,7 +53,7 @@ public @interface PluginInfo {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -79,7 +79,7 @@ public @interface StringProvider {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -88,7 +88,7 @@ public @interface StringProvider {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -41,7 +41,7 @@ public @interface TabInfo {
|
|||||||
/**
|
/**
|
||||||
* Name of Font Awesome icon.
|
* Name of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Name of the icon, if name is not valid no icon is shown.
|
* @return Name of the icon, if name is not valid no icon is shown.
|
||||||
*/
|
*/
|
||||||
@ -50,7 +50,7 @@ public @interface TabInfo {
|
|||||||
/**
|
/**
|
||||||
* Family of Font Awesome icon.
|
* Family of Font Awesome icon.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
* @return Family that matches an icon, if there is no icon for this family no icon is shown.
|
||||||
*/
|
*/
|
||||||
|
@ -18,7 +18,10 @@ package com.djrapitops.plan.extension.builder;
|
|||||||
|
|
||||||
import com.djrapitops.plan.component.Component;
|
import com.djrapitops.plan.component.Component;
|
||||||
import com.djrapitops.plan.extension.FormatType;
|
import com.djrapitops.plan.extension.FormatType;
|
||||||
import com.djrapitops.plan.extension.annotation.*;
|
import com.djrapitops.plan.extension.annotation.BooleanProvider;
|
||||||
|
import com.djrapitops.plan.extension.annotation.Conditional;
|
||||||
|
import com.djrapitops.plan.extension.annotation.StringProvider;
|
||||||
|
import com.djrapitops.plan.extension.annotation.Tab;
|
||||||
import com.djrapitops.plan.extension.extractor.ExtensionMethod;
|
import com.djrapitops.plan.extension.extractor.ExtensionMethod;
|
||||||
import com.djrapitops.plan.extension.icon.Color;
|
import com.djrapitops.plan.extension.icon.Color;
|
||||||
import com.djrapitops.plan.extension.icon.Family;
|
import com.djrapitops.plan.extension.icon.Family;
|
||||||
@ -64,7 +67,7 @@ public interface ValueBuilder {
|
|||||||
/**
|
/**
|
||||||
* Icon displayed next to the value.
|
* Icon displayed next to the value.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons
|
||||||
*
|
*
|
||||||
* @param iconName Name of the icon
|
* @param iconName Name of the icon
|
||||||
* @param iconFamily Family of the icon
|
* @param iconFamily Family of the icon
|
||||||
@ -78,7 +81,7 @@ public interface ValueBuilder {
|
|||||||
/**
|
/**
|
||||||
* Icon displayed next to the value.
|
* Icon displayed next to the value.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons
|
||||||
*
|
*
|
||||||
* @param icon Icon built using the methods in {@link Icon}.
|
* @param icon Icon built using the methods in {@link Icon}.
|
||||||
* @return This builder.
|
* @return This builder.
|
||||||
|
@ -47,6 +47,12 @@ public enum Color {
|
|||||||
BLACK,
|
BLACK,
|
||||||
NONE;
|
NONE;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a color by the enum name without exception.
|
||||||
|
*
|
||||||
|
* @param name Color#name()
|
||||||
|
* @return Optional if the color is found by that name, empty if not found.
|
||||||
|
*/
|
||||||
public static Optional<Color> getByName(String name) {
|
public static Optional<Color> getByName(String name) {
|
||||||
if (name == null) {
|
if (name == null) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
@ -56,4 +62,5 @@ public enum Color {
|
|||||||
} catch (IllegalArgumentException e) {
|
} catch (IllegalArgumentException e) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
}
|
}
|
||||||
}}
|
}
|
||||||
|
}
|
||||||
|
@ -37,6 +37,12 @@ public enum Family {
|
|||||||
*/
|
*/
|
||||||
BRAND;
|
BRAND;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get a family by the enum name without exception.
|
||||||
|
*
|
||||||
|
* @param name Family#name()
|
||||||
|
* @return Optional if the family is found by that name, empty if not found.
|
||||||
|
*/
|
||||||
public static Optional<Family> getByName(String name) {
|
public static Optional<Family> getByName(String name) {
|
||||||
if (name == null) {
|
if (name == null) {
|
||||||
return Optional.empty();
|
return Optional.empty();
|
||||||
|
@ -21,7 +21,7 @@ import java.util.Objects;
|
|||||||
/**
|
/**
|
||||||
* Object that represents an icon on the website.
|
* Object that represents an icon on the website.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://fontawesome.com/icons (select 'free')) for icons and their {@link Family}.
|
* See <a href="https://fontawesome.com/icons">FontAwesome</a> (select 'free')) for icons and their {@link Family}.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
@ -92,6 +92,9 @@ public class Icon {
|
|||||||
return "Icon{" + type.name() + ", '" + name + '\'' + ", " + color.name() + '}';
|
return "Icon{" + type.name() + ", '" + name + '\'' + ", " + color.name() + '}';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builder for an {@link Icon}.
|
||||||
|
*/
|
||||||
public static class Builder {
|
public static class Builder {
|
||||||
|
|
||||||
private final Icon icon;
|
private final Icon icon;
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* DataExtension API and related classes.
|
* DataExtension API and related classes.
|
||||||
*
|
|
||||||
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">Documentation</a>
|
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">Documentation</a>
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.extension;
|
package com.djrapitops.plan.extension;
|
@ -62,14 +62,44 @@ public interface CommonQueries {
|
|||||||
*/
|
*/
|
||||||
long fetchLastSeen(UUID playerUUID, UUID serverUUID);
|
long fetchLastSeen(UUID playerUUID, UUID serverUUID);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the UUIDs of all servers Plan has registered.
|
||||||
|
*
|
||||||
|
* @return Set of Server UUIDs
|
||||||
|
*/
|
||||||
Set<UUID> fetchServerUUIDs();
|
Set<UUID> fetchServerUUIDs();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch UUID of a player by name.
|
||||||
|
*
|
||||||
|
* @param playerName Name of the player
|
||||||
|
* @return UUID if it is found by Plan or empty if not found.
|
||||||
|
*/
|
||||||
Optional<UUID> fetchUUIDOf(String playerName);
|
Optional<UUID> fetchUUIDOf(String playerName);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch name of a player by UUID.
|
||||||
|
*
|
||||||
|
* @param playerUUID UUID of the player
|
||||||
|
* @return Name if it is known by Plan or empty if not.
|
||||||
|
*/
|
||||||
Optional<String> fetchNameOf(UUID playerUUID);
|
Optional<String> fetchNameOf(UUID playerUUID);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that schema has table you are using in your queries.
|
||||||
|
*
|
||||||
|
* @param table Name of the table, e.g. plan_users.
|
||||||
|
* @return true if table exists.
|
||||||
|
*/
|
||||||
boolean doesDBHaveTable(String table);
|
boolean doesDBHaveTable(String table);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Check that schema table has a column you are using in your queries.
|
||||||
|
*
|
||||||
|
* @param table Name of the table, e.g. plan_users.
|
||||||
|
* @param column Name of the column, e.g. id
|
||||||
|
* @return true if table and column exist.
|
||||||
|
*/
|
||||||
boolean doesDBHaveTableColumn(String table, String column);
|
boolean doesDBHaveTableColumn(String table, String column);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -126,7 +126,7 @@ public interface QueryService {
|
|||||||
CommonQueries getCommonQueries();
|
CommonQueries getCommonQueries();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
|
* See <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html">Functional Interfaces</a>
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
interface ThrowingConsumer<T> {
|
interface ThrowingConsumer<T> {
|
||||||
@ -134,7 +134,7 @@ public interface QueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
|
* See <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html">Functional Interfaces</a>
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
interface ThrowingFunction<T, R> {
|
interface ThrowingFunction<T, R> {
|
||||||
@ -142,7 +142,7 @@ public interface QueryService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* See https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html
|
* See <a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/package-summary.html">Functional Interfaces</a>
|
||||||
*/
|
*/
|
||||||
@FunctionalInterface
|
@FunctionalInterface
|
||||||
interface VoidFunction {
|
interface VoidFunction {
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
/**
|
/**
|
||||||
* Query API related classes.
|
* Query API related classes.
|
||||||
*
|
|
||||||
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-Query-API">Documentation</a>
|
* <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5-Query-API">Documentation</a>
|
||||||
*/
|
*/
|
||||||
package com.djrapitops.plan.query;
|
package com.djrapitops.plan.query;
|
@ -51,6 +51,9 @@ public interface ListenerService {
|
|||||||
*/
|
*/
|
||||||
void registerListenerForPlan(Object listener);
|
void registerListenerForPlan(Object listener);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Singleton holder for listeners.
|
||||||
|
*/
|
||||||
class Holder {
|
class Holder {
|
||||||
static final AtomicReference<ListenerService> service = new AtomicReference<>();
|
static final AtomicReference<ListenerService> service = new AtomicReference<>();
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* UserImportRefiner attempts to find any crucial information that is missing.
|
* UserImportRefiner attempts to find any crucial information that is missing.
|
||||||
*
|
* <p>
|
||||||
* - Finds UUIDs if only name is present.
|
* - Finds UUIDs if only name is present.
|
||||||
* - Finds Names if only UUID is present.
|
* - Finds Names if only UUID is present.
|
||||||
* - Removes any importers that do not have any identifiers.
|
* - Removes any importers that do not have any identifiers.
|
||||||
|
@ -53,7 +53,7 @@ import java.util.logging.Logger;
|
|||||||
* Task that handles player ping calculation on Bukkit based servers.
|
* Task that handles player ping calculation on Bukkit based servers.
|
||||||
* <p>
|
* <p>
|
||||||
* Modified PingManager from LagMonitor plugin.
|
* Modified PingManager from LagMonitor plugin.
|
||||||
* https://github.com/games647/LagMonitor/blob/master/src/main/java/com/github/games647/lagmonitor/task/PingManager.java
|
* <a href="https://github.com/games647/LagMonitor/blob/master/src/main/java/com/github/games647/lagmonitor/task/PingManager.java">original</a>
|
||||||
*
|
*
|
||||||
* @author games647
|
* @author games647
|
||||||
*/
|
*/
|
||||||
|
@ -32,7 +32,7 @@ import java.lang.reflect.Field;
|
|||||||
* An utility class that simplifies reflection in Bukkit plugins.
|
* An utility class that simplifies reflection in Bukkit plugins.
|
||||||
* <p>
|
* <p>
|
||||||
* Modified Reflection utility from LagMonitor plugin.
|
* Modified Reflection utility from LagMonitor plugin.
|
||||||
* https://github.com/games647/LagMonitor/blob/master/src/main/java/com/github/games647/lagmonitor/traffic/Reflection.java
|
* <a href="https://github.com/games647/LagMonitor/blob/master/src/main/java/com/github/games647/lagmonitor/traffic/Reflection.java">original code</a>
|
||||||
*
|
*
|
||||||
* @author Kristian
|
* @author Kristian
|
||||||
*/
|
*/
|
||||||
|
@ -43,7 +43,7 @@ import java.util.stream.Collectors;
|
|||||||
* PlanAPI extension for all implementations.
|
* PlanAPI extension for all implementations.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (https://github.com/plan-player-analytics/Plan/wiki/APIv5).
|
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (<a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5">wiki</a>).
|
||||||
*/
|
*/
|
||||||
@Singleton
|
@Singleton
|
||||||
@Deprecated(forRemoval = true, since = "5.0")
|
@Deprecated(forRemoval = true, since = "5.0")
|
||||||
|
@ -35,7 +35,7 @@ import java.util.UUID;
|
|||||||
* Interface for PlanAPI methods.
|
* Interface for PlanAPI methods.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (https://github.com/plan-player-analytics/Plan/wiki/APIv5).
|
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (<a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5">wiki</a>).
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "5.0")
|
@Deprecated(since = "5.0")
|
||||||
public interface PlanAPI {
|
public interface PlanAPI {
|
||||||
@ -65,7 +65,7 @@ public interface PlanAPI {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API.
|
* @deprecated PluginData API has been deprecated - see <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">wiki</a> for new API.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
void addPluginDataSource(PluginData pluginData);
|
void addPluginDataSource(PluginData pluginData);
|
||||||
|
@ -29,7 +29,7 @@ import java.util.Optional;
|
|||||||
* The Keys might change in the future, but the Optional API should help dealing with those cases.
|
* The Keys might change in the future, but the Optional API should help dealing with those cases.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (https://github.com/plan-player-analytics/Plan/wiki/APIv5).
|
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (<a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5">wiki</a>).
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "5.0")
|
@Deprecated(since = "5.0")
|
||||||
public class PlayerContainer {
|
public class PlayerContainer {
|
||||||
|
@ -28,7 +28,7 @@ import java.util.Optional;
|
|||||||
* The Keys might change in the future, but the Optional API should help dealing with those cases.
|
* The Keys might change in the future, but the Optional API should help dealing with those cases.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (https://github.com/plan-player-analytics/Plan/wiki/APIv5).
|
* @deprecated Plan API v4 has been deprecated, use the APIv5 instead (<a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5">wiki</a>).
|
||||||
*/
|
*/
|
||||||
@Deprecated(forRemoval = true, since = "5.0")
|
@Deprecated(forRemoval = true, since = "5.0")
|
||||||
public class ServerContainer {
|
public class ServerContainer {
|
||||||
|
@ -27,7 +27,7 @@ import java.util.UUID;
|
|||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @see TableContainer
|
* @see TableContainer
|
||||||
* @see InspectContainer
|
* @see InspectContainer
|
||||||
* @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API.
|
* @deprecated PluginData API has been deprecated - see <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">wiki</a> for new API.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "5.0")
|
@Deprecated(since = "5.0")
|
||||||
public final class AnalysisContainer extends InspectContainer {
|
public final class AnalysisContainer extends InspectContainer {
|
||||||
|
@ -27,7 +27,7 @@ import java.util.TreeMap;
|
|||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @see TableContainer
|
* @see TableContainer
|
||||||
* @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API.
|
* @deprecated PluginData API has been deprecated - see <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">wiki</a> for new API.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "5.0")
|
@Deprecated(since = "5.0")
|
||||||
public class InspectContainer {
|
public class InspectContainer {
|
||||||
|
@ -26,7 +26,7 @@ import java.util.List;
|
|||||||
* Container used for creating Html tables.
|
* Container used for creating Html tables.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API.
|
* @deprecated PluginData API has been deprecated - see <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">wiki</a> for new API.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "5.0")
|
@Deprecated(since = "5.0")
|
||||||
public class TableContainer {
|
public class TableContainer {
|
||||||
|
@ -23,7 +23,7 @@ import java.util.UUID;
|
|||||||
* Interface for PluginData objects that affect Ban state of players.
|
* Interface for PluginData objects that affect Ban state of players.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API.
|
* @deprecated PluginData API has been deprecated - see <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">wiki</a> for new API.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "5.0")
|
@Deprecated(since = "5.0")
|
||||||
public interface BanData {
|
public interface BanData {
|
||||||
|
@ -20,7 +20,7 @@ package com.djrapitops.plan.data.plugin;
|
|||||||
* Enum class for PluginData to estimate the required width of the contained items.
|
* Enum class for PluginData to estimate the required width of the contained items.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API.
|
* @deprecated PluginData API has been deprecated - see <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">wiki</a> for new API.
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
@Deprecated
|
||||||
public enum ContainerSize {
|
public enum ContainerSize {
|
||||||
|
@ -33,7 +33,7 @@ import java.util.UUID;
|
|||||||
* to register objects extending this class.
|
* to register objects extending this class.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
* @deprecated PluginData API has been deprecated - see https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API for new API.
|
* @deprecated PluginData API has been deprecated - see <a href="https://github.com/plan-player-analytics/Plan/wiki/APIv5---DataExtension-API">wiki</a> for new API.
|
||||||
*/
|
*/
|
||||||
@Deprecated(since = "5.0")
|
@Deprecated(since = "5.0")
|
||||||
public abstract class PluginData {
|
public abstract class PluginData {
|
||||||
|
@ -139,7 +139,6 @@ public interface DataContainer {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Get formatted Value identified by the Key.
|
* Get formatted Value identified by the Key.
|
||||||
* <p>
|
|
||||||
*
|
*
|
||||||
* @param key Key that identifies the Value
|
* @param key Key that identifies the Value
|
||||||
* @param formatter Formatter for the Optional returned by {@link DataContainer#getValue(Key)}
|
* @param formatter Formatter for the Optional returned by {@link DataContainer#getValue(Key)}
|
||||||
|
@ -38,15 +38,16 @@ import java.util.concurrent.TimeUnit;
|
|||||||
* <p>
|
* <p>
|
||||||
* Activity for a single week is calculated using {@code A(t) = (1 / (pi/2 * (t/T) + 1))}.
|
* Activity for a single week is calculated using {@code A(t) = (1 / (pi/2 * (t/T) + 1))}.
|
||||||
* A(t) is based on function f(x) = 1 / (x + 1), which has property f(0) = 1, decreasing from there, but not in a straight line.
|
* A(t) is based on function f(x) = 1 / (x + 1), which has property f(0) = 1, decreasing from there, but not in a straight line.
|
||||||
* You can see the function plotted here https://www.wolframalpha.com/input/?i=1+%2F+(x%2B1)+from+-1+to+2
|
* You can see the function plotted <a href="https://www.wolframalpha.com/input/?i=1+%2F+(x%2B1)+from+-1+to+2">here</a>
|
||||||
* <p>
|
* <p>
|
||||||
* To fine tune the curve pi/2 is used since it felt like a good curve.
|
* To fine tune the curve pi/2 is used since it felt like a good curve.
|
||||||
* <p>
|
* <p>
|
||||||
* Activity index A is calculated by using the formula:
|
* Activity index A is calculated by using the formula:
|
||||||
* {@code A = 5 - 5 * [A(t1) + A(t2) + A(t3)] / 3}
|
* {@code A = 5 - 5 * [A(t1) + A(t2) + A(t3)] / 3}
|
||||||
* <p>
|
* <p>
|
||||||
|
* <a href="https://www.wolframalpha.com/input/?i=plot+y+%3D+5+-+5+*+(1+%2F+(pi%2F2+*+x%2B1))+and+y+%3D1+and+y+%3D+2+and+y+%3D+3+and+y+%3D+3.75+from+-0.5+to+3">
|
||||||
* Plot for A and limits
|
* Plot for A and limits
|
||||||
* https://www.wolframalpha.com/input/?i=plot+y+%3D+5+-+5+*+(1+%2F+(pi%2F2+*+x%2B1))+and+y+%3D1+and+y+%3D+2+and+y+%3D+3+and+y+%3D+3.75+from+-0.5+to+3
|
* </a>
|
||||||
* <p>
|
* <p>
|
||||||
* New Limits for A would thus be
|
* New Limits for A would thus be
|
||||||
* {@code < 1: Inactive}
|
* {@code < 1: Inactive}
|
||||||
|
@ -24,7 +24,7 @@ import java.util.TimeZone;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Formats timestamps to the Last-Modified header time format.
|
* Formats timestamps to the Last-Modified header time format.
|
||||||
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified
|
* <a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Last-Modified">Documentation for the header</a>
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -42,8 +42,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Utility for creating jQuery Datatables JSON for a Players Table.
|
* Utility for creating jQuery Datatables JSON for a Players Table.
|
||||||
* <p>
|
|
||||||
* See https://www.datatables.net/manual/data/orthogonal-data#HTML-5 for sort kinds
|
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -31,9 +31,6 @@ import java.util.Objects;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Configuration utility for storing settings in a .yml file.
|
* Configuration utility for storing settings in a .yml file.
|
||||||
* <p>
|
|
||||||
* Based on
|
|
||||||
* https://github.com/AuroraLS3/Abstract-Plugin-Framework/blob/72e221d3571ef200727713d10d3684c51e9f469d/AbstractPluginFramework/api/src/main/java/com/djrapitops/plugin/config/Config.java
|
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -34,9 +34,6 @@ import java.util.stream.Collectors;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a single node in a configuration file
|
* Represents a single node in a configuration file
|
||||||
* <p>
|
|
||||||
* Based on
|
|
||||||
* https://github.com/AuroraLS3/Abstract-Plugin-Framework/blob/72e221d3571ef200727713d10d3684c51e9f469d/AbstractPluginFramework/api/src/main/java/com/djrapitops/plugin/config/ConfigNode.java
|
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -27,7 +27,7 @@ public enum LangCode {
|
|||||||
EN("English", "AuroraLS3"),
|
EN("English", "AuroraLS3"),
|
||||||
ES("Español", "Catalina, itaquito, Elguerrero & 4drian3d"),
|
ES("Español", "Catalina, itaquito, Elguerrero & 4drian3d"),
|
||||||
CN("\u6C49\u8BED", "f0rb1d (\u4f5b\u58c1\u706f), qsefthuopq, shaokeyibb, Fur_xia, 10935336, SkipM4, TheLittle_Yang & jhqwqmc"), // Simplified Chinese
|
CN("\u6C49\u8BED", "f0rb1d (\u4f5b\u58c1\u706f), qsefthuopq, shaokeyibb, Fur_xia, 10935336, SkipM4, TheLittle_Yang & jhqwqmc"), // Simplified Chinese
|
||||||
CS("čeština", "Shadowhackercz, QuakyCZ, MrFriggo & WolverStones"),
|
CS("\u010de\u0161tina", "Shadowhackercz, QuakyCZ, MrFriggo & WolverStones"),
|
||||||
DE("Deutsch", "Eyremba, fuzzlemann, Morsmorse, hallo1142 & DubHacker"),
|
DE("Deutsch", "Eyremba, fuzzlemann, Morsmorse, hallo1142 & DubHacker"),
|
||||||
FI("suomi", "AuroraLS3, KasperiP"),
|
FI("suomi", "AuroraLS3, KasperiP"),
|
||||||
FR("français", "CyanTech, Aurelien & Nogapra"),
|
FR("français", "CyanTech, Aurelien & Nogapra"),
|
||||||
@ -35,9 +35,9 @@ public enum LangCode {
|
|||||||
JA("\u65E5\u672C\u8A9E", "yukieji, inductor, lis2a, yu_solt , Jumala9163 & ringoXD"),
|
JA("\u65E5\u672C\u8A9E", "yukieji, inductor, lis2a, yu_solt , Jumala9163 & ringoXD"),
|
||||||
KO("\uD55C\uAD6D\uC5B4", "Guinness_Akihiko"),
|
KO("\uD55C\uAD6D\uC5B4", "Guinness_Akihiko"),
|
||||||
NL("Nederlands", "Sander0542"),
|
NL("Nederlands", "Sander0542"),
|
||||||
RU("русский", "Saph1s, Perhun_Pak, BratishkaErik & stashenko"),
|
RU("ру\u0441\u0441к\u0438\u0439", "Saph1s, Perhun_Pak, BratishkaErik & stashenko"),
|
||||||
TR("Türkçe", "TDJisvan, BruilsiozPro & EyuphanMandiraci"),
|
TR("Türkçe", "TDJisvan, BruilsiozPro & EyuphanMandiraci"),
|
||||||
UK("українська мова", "xlanyleeet"),
|
UK("україн\u0441ька \u043cо\u0432а", "xlanyleeet"),
|
||||||
PT_BR("Português", "jvmuller"),
|
PT_BR("Português", "jvmuller"),
|
||||||
ZH_TW("\u6F22\u8A9E", "\u6d1b\u4f0a & zisunny104");
|
ZH_TW("\u6F22\u8A9E", "\u6d1b\u4f0a & zisunny104");
|
||||||
|
|
||||||
|
@ -50,15 +50,16 @@ import static com.djrapitops.plan.storage.database.sql.building.Sql.*;
|
|||||||
* <p>
|
* <p>
|
||||||
* Activity for a single week is calculated using {@code A(t) = (1 / (pi/2 * (t/T) + 1))}.
|
* Activity for a single week is calculated using {@code A(t) = (1 / (pi/2 * (t/T) + 1))}.
|
||||||
* A(t) is based on function f(x) = 1 / (x + 1), which has property f(0) = 1, decreasing from there, but not in a straight line.
|
* A(t) is based on function f(x) = 1 / (x + 1), which has property f(0) = 1, decreasing from there, but not in a straight line.
|
||||||
* You can see the function plotted here https://www.wolframalpha.com/input/?i=1+%2F+(x%2B1)+from+-1+to+2
|
* You can see the function plotted <a href="https://www.wolframalpha.com/input/?i=1+%2F+(x%2B1)+from+-1+to+2">here</a>
|
||||||
* <p>
|
* <p>
|
||||||
* To fine tune the curve pi/2 is used since it felt like a good curve.
|
* To fine tune the curve pi/2 is used since it felt like a good curve.
|
||||||
* <p>
|
* <p>
|
||||||
* Activity index A is calculated by using the formula:
|
* Activity index A is calculated by using the formula:
|
||||||
* {@code A = 5 - 5 * [A(t1) + A(t2) + A(t3)] / 3}
|
* {@code A = 5 - 5 * [A(t1) + A(t2) + A(t3)] / 3}
|
||||||
* <p>
|
* <p>
|
||||||
|
* <a href="https://www.wolframalpha.com/input/?i=plot+y+%3D+5+-+5+*+(1+%2F+(pi%2F2+*+x%2B1))+and+y+%3D1+and+y+%3D+2+and+y+%3D+3+and+y+%3D+3.75+from+-0.5+to+3">
|
||||||
* Plot for A and limits
|
* Plot for A and limits
|
||||||
* https://www.wolframalpha.com/input/?i=plot+y+%3D+5+-+5+*+(1+%2F+(pi%2F2+*+x%2B1))+and+y+%3D1+and+y+%3D+2+and+y+%3D+3+and+y+%3D+3.75+from+-0.5+to+3
|
* </a>
|
||||||
* <p>
|
* <p>
|
||||||
* New Limits for A would thus be
|
* New Limits for A would thus be
|
||||||
* {@code < 1: Inactive}
|
* {@code < 1: Inactive}
|
||||||
|
@ -46,15 +46,16 @@ import static com.djrapitops.plan.storage.database.sql.building.Sql.*;
|
|||||||
* <p>
|
* <p>
|
||||||
* Activity for a single week is calculated using {@code A(t) = (1 / (pi/2 * (t/T) + 1))}.
|
* Activity for a single week is calculated using {@code A(t) = (1 / (pi/2 * (t/T) + 1))}.
|
||||||
* A(t) is based on function f(x) = 1 / (x + 1), which has property f(0) = 1, decreasing from there, but not in a straight line.
|
* A(t) is based on function f(x) = 1 / (x + 1), which has property f(0) = 1, decreasing from there, but not in a straight line.
|
||||||
* You can see the function plotted here https://www.wolframalpha.com/input/?i=1+%2F+(x%2B1)+from+-1+to+2
|
* You can see the function plotted <a href="https://www.wolframalpha.com/input/?i=1+%2F+(x%2B1)+from+-1+to+2">here</a>
|
||||||
* <p>
|
* <p>
|
||||||
* To fine tune the curve pi/2 is used since it felt like a good curve.
|
* To fine tune the curve pi/2 is used since it felt like a good curve.
|
||||||
* <p>
|
* <p>
|
||||||
* Activity index A is calculated by using the formula:
|
* Activity index A is calculated by using the formula:
|
||||||
* {@code A = 5 - 5 * [A(t1) + A(t2) + A(t3)] / 3}
|
* {@code A = 5 - 5 * [A(t1) + A(t2) + A(t3)] / 3}
|
||||||
* <p>
|
* <p>
|
||||||
|
* <a href="https://www.wolframalpha.com/input/?i=plot+y+%3D+5+-+5+*+(1+%2F+(pi%2F2+*+x%2B1))+and+y+%3D1+and+y+%3D+2+and+y+%3D+3+and+y+%3D+3.75+from+-0.5+to+3">
|
||||||
* Plot for A and limits
|
* Plot for A and limits
|
||||||
* https://www.wolframalpha.com/input/?i=plot+y+%3D+5+-+5+*+(1+%2F+(pi%2F2+*+x%2B1))+and+y+%3D1+and+y+%3D+2+and+y+%3D+3+and+y+%3D+3.75+from+-0.5+to+3
|
* </a>
|
||||||
* <p>
|
* <p>
|
||||||
* New Limits for A would thus be
|
* New Limits for A would thus be
|
||||||
* {@code < 1: Inactive}
|
* {@code < 1: Inactive}
|
||||||
|
@ -33,8 +33,9 @@ import static com.djrapitops.plan.storage.database.sql.building.Sql.*;
|
|||||||
/**
|
/**
|
||||||
* Transaction for removing duplicate data in plan_user_info.
|
* Transaction for removing duplicate data in plan_user_info.
|
||||||
* <p>
|
* <p>
|
||||||
* https://github.com/plan-player-analytics/Plan/issues/956
|
* Related issues:
|
||||||
* https://github.com/plan-player-analytics/Plan/issues/967
|
* <a href="https://github.com/plan-player-analytics/Plan/issues/956">Issue #956</a>
|
||||||
|
* <a href="https://github.com/plan-player-analytics/Plan/issues/967">Issue #967</a>
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -28,7 +28,7 @@ import static com.djrapitops.plan.storage.database.sql.building.Sql.*;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Patch to fix incorrect register dates for nukkit.
|
* Patch to fix incorrect register dates for nukkit.
|
||||||
* https://github.com/plan-player-analytics/Plan/issues/1320
|
* <a href="https://github.com/plan-player-analytics/Plan/issues/1320">Related issue</a>
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -19,7 +19,7 @@ package com.djrapitops.plan.storage.database.transactions.patches;
|
|||||||
/**
|
/**
|
||||||
* Patch that removes plan_commandusages table.
|
* Patch that removes plan_commandusages table.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://github.com/plan-player-analytics/Plan/issues/1240 for more details
|
* See <a href="https://github.com/plan-player-analytics/Plan/issues/1240">related issue</a> for more details
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -31,7 +31,7 @@ import java.util.Set;
|
|||||||
import static com.djrapitops.plan.storage.database.sql.building.Sql.*;
|
import static com.djrapitops.plan.storage.database.sql.building.Sql.*;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes invalid data caused by https://github.com/plan-player-analytics/Plan/issues/1355.
|
* Removes invalid data caused by <a href="https://github.com/plan-player-analytics/Plan/issues/1355">issue #1355</a>.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -28,7 +28,7 @@ import static com.djrapitops.plan.storage.database.sql.building.Sql.WHERE;
|
|||||||
/**
|
/**
|
||||||
* Adds a is_proxy field to remove technical debt assuming name field "BungeeCord" being the proxy.
|
* Adds a is_proxy field to remove technical debt assuming name field "BungeeCord" being the proxy.
|
||||||
* <p>
|
* <p>
|
||||||
* See https://github.com/plan-player-analytics/Plan/issues/1678 for more details
|
* See <a href="https://github.com/plan-player-analytics/Plan/issues/1678">issue #1678</a> for more details
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -30,7 +30,7 @@ import java.util.Base64;
|
|||||||
/**
|
/**
|
||||||
* Password Encryption utility.
|
* Password Encryption utility.
|
||||||
* <p>
|
* <p>
|
||||||
* https://github.com/defuse/password-hashing/blob/master/PasswordStorage.java
|
* <a href="https://github.com/defuse/password-hashing/blob/master/PasswordStorage.java">Based on this code</a>
|
||||||
*
|
*
|
||||||
* @author Defuse
|
* @author Defuse
|
||||||
*/
|
*/
|
||||||
|
@ -24,7 +24,7 @@ import java.util.List;
|
|||||||
/**
|
/**
|
||||||
* Formats chat messages in different ways.
|
* Formats chat messages in different ways.
|
||||||
* <p>
|
* <p>
|
||||||
* Original code: https://hastebin.com/uziyajirag.avrasm
|
* <a href="https://hastebin.com/uziyajirag.avrasm">Original code</a>
|
||||||
*/
|
*/
|
||||||
public class ChatFormatter {
|
public class ChatFormatter {
|
||||||
private static final int CENTER_PX = 154;
|
private static final int CENTER_PX = 154;
|
||||||
|
@ -19,7 +19,7 @@ package com.djrapitops.plan.utilities.chat;
|
|||||||
/**
|
/**
|
||||||
* Contains width of characters in the chat with default font.
|
* Contains width of characters in the chat with default font.
|
||||||
* <p>
|
* <p>
|
||||||
* Original code form https://www.spigotmc.org/threads/free-code-sending-perfectly-centered-chat-message.95872/page-2
|
* <a href="https://www.spigotmc.org/threads/free-code-sending-perfectly-centered-chat-message.95872/page-2">Original code</a>
|
||||||
*/
|
*/
|
||||||
public enum DefaultFontInfo {
|
public enum DefaultFontInfo {
|
||||||
|
|
||||||
|
@ -81,7 +81,7 @@ public class Lists {
|
|||||||
* @param mapper Function to change object of type A to type B
|
* @param mapper Function to change object of type A to type B
|
||||||
* @param <A> Type of the old list objects
|
* @param <A> Type of the old list objects
|
||||||
* @param <B> Type of the new list objects
|
* @param <B> Type of the new list objects
|
||||||
* @return List with elements in original that keep returned true for.
|
* @return Set with elements in original that keep returned true for.
|
||||||
*/
|
*/
|
||||||
public static <A, B> Set<B> mapUnique(Collection<A> original, Function<A, B> mapper) {
|
public static <A, B> Set<B> mapUnique(Collection<A> original, Function<A, B> mapper) {
|
||||||
Set<B> mapped = new HashSet<>();
|
Set<B> mapped = new HashSet<>();
|
||||||
|
@ -19,7 +19,7 @@ package com.djrapitops.plan.version;
|
|||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Data class for reading version.txt in https://github.com/AuroraLS3/Plan-PlayerAnalytics.
|
* Data class for reading version.txt in <a href="https://github.com/plan-player-analytics/Plan">Github Repository</a>.
|
||||||
*
|
*
|
||||||
* @author AuroraLS3
|
* @author AuroraLS3
|
||||||
*/
|
*/
|
||||||
|
@ -49,9 +49,6 @@ import java.util.concurrent.TimeUnit;
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Task that handles player ping calculation on Nukkit based servers.
|
* Task that handles player ping calculation on Nukkit based servers.
|
||||||
* <p>
|
|
||||||
* Modified PingManager from LagMonitor plugin.
|
|
||||||
* https://github.com/games647/LagMonitor/blob/master/src/main/java/com/github/games647/lagmonitor/task/PingManager.java
|
|
||||||
*
|
*
|
||||||
* @author games647
|
* @author games647
|
||||||
*/
|
*/
|
||||||
|
Loading…
Reference in New Issue
Block a user