mirror of
https://github.com/MiniPlaceholders/MiniPlaceholders.git
synced 2026-11-04 16:50:11 -05:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5e8a881b51 | ||
|
|
8bb9bafb8b | ||
|
|
74f14f139c | ||
|
|
45b2fbe977 | ||
|
|
df04f51d60 | ||
|
|
5b35094d27 | ||
|
|
e8635bc6c8 | ||
|
|
a1e95295cc | ||
|
|
927563f749 | ||
|
|
225bafeaaa | ||
|
|
dac6354071 | ||
|
|
01bb19213c | ||
|
|
6ff764bf4c | ||
|
|
4a509e63a2 | ||
|
|
f9d3f01a34 | ||
|
|
e5cf5001eb | ||
|
|
a762a68901 | ||
|
|
20b7d92710 | ||
|
|
d0edacfafd | ||
|
|
43c034fc0b | ||
|
|
2337525e25 | ||
|
|
0bb6f6264a |
No files matched your search
@@ -0,0 +1,13 @@
|
||||
# These are supported funding model platforms
|
||||
|
||||
github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2]
|
||||
patreon: # Replace with a single Patreon username
|
||||
open_collective: # Replace with a single Open Collective username
|
||||
ko_fi: # Replace with a single Ko-fi username
|
||||
tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel
|
||||
community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry
|
||||
liberapay: # Replace with a single Liberapay username
|
||||
issuehunt: # Replace with a single IssueHunt username
|
||||
otechie: # Replace with a single Otechie username
|
||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||
custom: https://paypal.me/4drian3d # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2']
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
command: gradle build
|
||||
|
||||
- name: Upload Artifacts
|
||||
uses: actions/upload-artifact@v2
|
||||
uses: actions/upload-artifact@v3
|
||||
with:
|
||||
name: MiniPlaceholders
|
||||
path: build/libs/MiniPlaceholders.jar
|
||||
path: build/libs/MiniPlaceholders-*.jar
|
||||
+11
-11
@@ -4,15 +4,15 @@ plugins {
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("net.kyori:adventure-api:4.10.1")
|
||||
compileOnly("net.kyori:adventure-text-minimessage:4.10.1")
|
||||
compileOnly("net.kyori:adventure-text-serializer-legacy:4.10.1")
|
||||
compileOnly("net.kyori:adventure-api:4.11.0")
|
||||
compileOnly("net.kyori:adventure-text-minimessage:4.11.0")
|
||||
compileOnly("net.kyori:adventure-text-serializer-legacy:4.11.0")
|
||||
compileOnly(project(":miniplaceholders-connect"))
|
||||
testImplementation(platform("org.junit:junit-bom:5.8.1"))
|
||||
testImplementation("org.junit.jupiter:junit-jupiter")
|
||||
testImplementation("net.kyori:adventure-api:4.10.1")
|
||||
testImplementation("net.kyori:adventure-text-minimessage:4.10.1")
|
||||
testImplementation("net.kyori:adventure-text-serializer-plain:4.10.1")
|
||||
testImplementation("net.kyori:adventure-api:4.11.0")
|
||||
testImplementation("net.kyori:adventure-text-minimessage:4.11.0")
|
||||
testImplementation("net.kyori:adventure-text-serializer-plain:4.11.0")
|
||||
}
|
||||
|
||||
tasks {
|
||||
@@ -29,9 +29,11 @@ jmh {
|
||||
iterations.set(2)
|
||||
fork.set(2)
|
||||
}
|
||||
|
||||
java {
|
||||
withSourcesJar()
|
||||
withJavadocJar()
|
||||
toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
}
|
||||
|
||||
val projectGroup: String = project.group as String
|
||||
@@ -50,13 +52,11 @@ publishing {
|
||||
|
||||
tasks.withType<Javadoc> {
|
||||
(options as StandardJavadocDocletOptions).links(
|
||||
"https://jd.adventure.kyori.net/api/4.10.1/",
|
||||
"https://jd.adventure.kyori.net/text-minimessage/4.10.1/"
|
||||
"https://jd.adventure.kyori.net/api/4.10.0/",
|
||||
"https://jd.adventure.kyori.net/text-minimessage/4.11.0/"
|
||||
)
|
||||
}
|
||||
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
|
||||
tasks {
|
||||
compileJava {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
@@ -69,4 +69,4 @@ tasks {
|
||||
processResources {
|
||||
filteringCharset = Charsets.UTF_8.name()
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,17 +2,19 @@ package me.dreamerzero.miniplaceholders.api;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.HashSet;
|
||||
import java.util.Objects;
|
||||
import java.util.Set;
|
||||
|
||||
import org.jetbrains.annotations.Contract;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import me.dreamerzero.miniplaceholders.api.enums.Platform;
|
||||
import me.dreamerzero.miniplaceholders.api.utils.Resolvers;
|
||||
import me.dreamerzero.miniplaceholders.connect.InternalPlatform;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
|
||||
import static java.util.Objects.requireNonNull;
|
||||
|
||||
/**
|
||||
* MiniPlaceholders
|
||||
*
|
||||
@@ -34,10 +36,12 @@ public final class MiniPlaceholders {
|
||||
* @return the platform
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static @NotNull Platform getPlatform(){
|
||||
return InternalPlatform.platform() == InternalPlatform.PAPER
|
||||
? Platform.PAPER
|
||||
: Platform.VELOCITY;
|
||||
public static @NotNull Platform getPlatform() {
|
||||
switch (InternalPlatform.platform()) {
|
||||
case PAPER: return Platform.PAPER;
|
||||
case VELOCITY: return Platform.VELOCITY;
|
||||
default: return Platform.KRYPTON;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -51,10 +55,13 @@ public final class MiniPlaceholders {
|
||||
* @since 1.0.0
|
||||
*/
|
||||
public static @NotNull TagResolver getGlobalPlaceholders() {
|
||||
final TagResolver.Builder resolvers = TagResolver.builder();
|
||||
expansions.forEach(exp -> resolvers.resolver(exp.globalPlaceholders()));
|
||||
|
||||
return resolvers.build();
|
||||
final TagResolver.Builder builder = TagResolver.builder();
|
||||
for (final Expansion expansion : expansions) {
|
||||
final TagResolver resolver = expansion.globalPlaceholders();
|
||||
if (resolver != TagResolver.empty())
|
||||
builder.resolver(resolver);
|
||||
}
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -69,11 +76,14 @@ public final class MiniPlaceholders {
|
||||
*/
|
||||
@Contract("null -> fail, !null -> !null")
|
||||
public static @NotNull TagResolver getAudiencePlaceholders(final @NotNull Audience audience) {
|
||||
Objects.requireNonNull(audience, () -> "audience cannot be null");
|
||||
requireNonNull(audience, "audience cannot be null");
|
||||
|
||||
final TagResolver.Builder resolvers = TagResolver.builder();
|
||||
expansions.forEach(exp -> resolvers.resolver(exp.audiencePlaceholders(audience)));
|
||||
|
||||
for (Expansion expansion : expansions) {
|
||||
final TagResolver resolver = expansion.audiencePlaceholders(audience);
|
||||
if (resolver != TagResolver.empty())
|
||||
resolvers.resolver(resolver);
|
||||
}
|
||||
return resolvers.build();
|
||||
}
|
||||
|
||||
@@ -90,13 +100,18 @@ public final class MiniPlaceholders {
|
||||
*/
|
||||
@Contract("_, null -> fail; null, _ -> fail; !null, !null -> !null")
|
||||
public static @NotNull TagResolver getRelationalPlaceholders(final @NotNull Audience audience, final @NotNull Audience otherAudience) {
|
||||
Objects.requireNonNull(audience, () -> "audience cannot be null");
|
||||
Objects.requireNonNull(otherAudience, () -> "otherAudience cannot be null");
|
||||
requireNonNull(audience, "audience cannot be null");
|
||||
requireNonNull(otherAudience, "otherAudience cannot be null");
|
||||
|
||||
final TagResolver.Builder resolvers = TagResolver.builder();
|
||||
expansions.forEach(exp -> resolvers.resolver(exp.relationalPlaceholders(audience, otherAudience)));
|
||||
final TagResolver.Builder builder = TagResolver.builder();
|
||||
for (final Expansion expansion : expansions) {
|
||||
Resolvers.applyIfNotEmpty(
|
||||
expansion.relationalPlaceholders(audience, otherAudience),
|
||||
builder
|
||||
);
|
||||
}
|
||||
|
||||
return resolvers.build();
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -119,12 +134,12 @@ public final class MiniPlaceholders {
|
||||
*/
|
||||
@Contract("_, null -> fail; null, _ -> fail; !null, !null -> !null")
|
||||
public static @NotNull TagResolver getAudienceGlobalPlaceholders(final @NotNull Audience audience) {
|
||||
Objects.requireNonNull(audience, () -> "audience cannot be null");
|
||||
requireNonNull(audience, "audience cannot be null");
|
||||
final TagResolver.Builder builder = TagResolver.builder();
|
||||
|
||||
for(final Expansion expansion : expansions) {
|
||||
builder.resolver(expansion.audiencePlaceholders(audience));
|
||||
builder.resolver(expansion.globalPlaceholders());
|
||||
for (final Expansion expansion : expansions) {
|
||||
Resolvers.applyIfNotEmpty(expansion.audiencePlaceholders(audience), builder);
|
||||
Resolvers.applyIfNotEmpty(expansion.globalPlaceholders(), builder);
|
||||
}
|
||||
|
||||
return builder.build();
|
||||
@@ -153,14 +168,14 @@ public final class MiniPlaceholders {
|
||||
*/
|
||||
@Contract("_, null -> fail; null, _ -> fail; !null, !null -> !null")
|
||||
public static @NotNull TagResolver getRelationalGlobalPlaceholders(final @NotNull Audience audience, final @NotNull Audience otherAudience) {
|
||||
Objects.requireNonNull(audience, () -> "audience cannot be null");
|
||||
Objects.requireNonNull(otherAudience, () -> "otherAudience cannot be null");
|
||||
requireNonNull(audience, "audience cannot be null");
|
||||
requireNonNull(otherAudience, "otherAudience cannot be null");
|
||||
|
||||
final TagResolver.Builder builder = TagResolver.builder();
|
||||
for(final Expansion expansion : expansions) {
|
||||
builder.resolver(expansion.audiencePlaceholders(audience));
|
||||
builder.resolver(expansion.relationalPlaceholders(audience, otherAudience));
|
||||
builder.resolver(expansion.globalPlaceholders());
|
||||
for (final Expansion expansion : expansions) {
|
||||
Resolvers.applyIfNotEmpty(expansion.audiencePlaceholders(audience), builder);
|
||||
Resolvers.applyIfNotEmpty(expansion.relationalPlaceholders(audience, otherAudience), builder);
|
||||
Resolvers.applyIfNotEmpty(expansion.globalPlaceholders(), builder);
|
||||
}
|
||||
|
||||
return builder.build();
|
||||
|
||||
@@ -5,5 +5,7 @@ public enum Platform {
|
||||
/**Paper Platform */
|
||||
PAPER,
|
||||
/**Velocity Platform */
|
||||
VELOCITY
|
||||
VELOCITY,
|
||||
/**Krypton Platform */
|
||||
KRYPTON;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package me.dreamerzero.miniplaceholders.api.utils;
|
||||
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
|
||||
/**
|
||||
* Class of utilities to manage TagResolvers
|
||||
* @since 1.2.0
|
||||
*/
|
||||
public final class Resolvers {
|
||||
private Resolvers() {}
|
||||
|
||||
/**
|
||||
* Check if the TagResolver is an instance of TagResolver.empty(),
|
||||
* that is, it will always return null
|
||||
* @param resolver the resolver to check
|
||||
* @return true if the TagResolver is the same as TagResolver.empty(), else false
|
||||
* @since 1.2.0
|
||||
*/
|
||||
public static boolean isEmpty(final @NotNull TagResolver resolver) {
|
||||
return resolver == TagResolver.empty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if the TagResolver provided is not a TagResolver.empty()
|
||||
* @param resolver the resolver to check
|
||||
* @return false if the TagResolver is the same as TagResolver.empty(), else true
|
||||
* @since 1.2.0
|
||||
*
|
||||
*/
|
||||
public static boolean isNotEmpty(final @NotNull TagResolver resolver) {
|
||||
return resolver != TagResolver.empty();
|
||||
}
|
||||
|
||||
/**
|
||||
* Applies a TagResolver to a TagResolver.Builder in case it is not a TagResolver.empty()
|
||||
* @param resolver the resolver to check
|
||||
* @param builder the resolver that can be added to the builder
|
||||
* @since 1.2.0
|
||||
*/
|
||||
public static void applyIfNotEmpty(final @NotNull TagResolver resolver, final @NotNull TagResolver.Builder builder) {
|
||||
if (isNotEmpty(resolver)) {
|
||||
builder.resolver(resolver);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
/** MiniPlaceholdes API Module */
|
||||
open module me.dreamerzero.miniplaceholders.api {
|
||||
requires net.kyori.adventure;
|
||||
requires net.kyori.examination.api;
|
||||
requires net.kyori.adventure.text.minimessage;
|
||||
requires static org.jetbrains.annotations;
|
||||
requires me.dreamerzero.miniplaceholders.connect;
|
||||
|
||||
exports me.dreamerzero.miniplaceholders.api;
|
||||
exports me.dreamerzero.miniplaceholders.api.enums;
|
||||
exports me.dreamerzero.miniplaceholders.api.utils;
|
||||
exports me.dreamerzero.miniplaceholders.api.placeholder;
|
||||
}
|
||||
@@ -8,7 +8,7 @@ import org.junit.jupiter.api.Test;
|
||||
import me.dreamerzero.miniplaceholders.api.Expansion;
|
||||
import me.dreamerzero.miniplaceholders.api.utils.TagsUtils;
|
||||
|
||||
public class ExpansionsTest {
|
||||
class ExpansionsTest {
|
||||
@Test
|
||||
@DisplayName("Expansion Equality")
|
||||
void equalsExpansions(){
|
||||
|
||||
@@ -11,9 +11,9 @@ import me.dreamerzero.miniplaceholders.api.utils.TagsUtils;
|
||||
import net.kyori.adventure.audience.Audience;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
|
||||
|
||||
public class MiniPlaceholdersTest {
|
||||
class MiniPlaceholdersTest {
|
||||
@Test
|
||||
@Disabled("The tagresolvers implemented classes does not implement the equals method")
|
||||
@Disabled("Cannot correctly calculate the equity of 2 TagResolvers obtained in different ways")
|
||||
void methodEquality(){
|
||||
Expansion.builder("equality")
|
||||
.audiencePlaceholder("audience", TagsUtils.NULL_AUDIENCE_PLACEHOLDER)
|
||||
|
||||
@@ -15,7 +15,7 @@ import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
|
||||
public class PlaceholderTest {
|
||||
class PlaceholderTest {
|
||||
|
||||
@Test
|
||||
@DisplayName("Audience Placeholder Test")
|
||||
|
||||
@@ -15,7 +15,7 @@ import net.kyori.adventure.text.minimessage.Context;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.kyori.adventure.text.minimessage.tag.resolver.ArgumentQueue;
|
||||
|
||||
public class ThrowableTest {
|
||||
class ThrowableTest {
|
||||
@Test
|
||||
@DisplayName("Nullable Exception")
|
||||
void throwOnNull(){
|
||||
|
||||
+3
-5
@@ -6,10 +6,7 @@ plugins {
|
||||
}
|
||||
|
||||
allprojects {
|
||||
apply(plugin = "java")
|
||||
group = "me.dreamerzero.miniplaceholders"
|
||||
version = "1.1.1"
|
||||
description = "MiniPlaceholders"
|
||||
apply<JavaPlugin>()
|
||||
}
|
||||
|
||||
dependencies {
|
||||
@@ -18,6 +15,7 @@ dependencies {
|
||||
shadow(project(":miniplaceholders-common"))
|
||||
shadow(project(":miniplaceholders-velocity"))
|
||||
shadow(project(":miniplaceholders-paper", "reobf"))
|
||||
shadow(project(":miniplaceholders-krypton"))
|
||||
}
|
||||
|
||||
subprojects {
|
||||
@@ -30,7 +28,7 @@ subprojects {
|
||||
|
||||
tasks {
|
||||
shadowJar {
|
||||
archiveFileName.set("MiniPlaceholders.jar")
|
||||
archiveFileName.set("MiniPlaceholders-$version.jar")
|
||||
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
|
||||
configurations = listOf(project.configurations.shadow.get())
|
||||
}
|
||||
|
||||
+11
-5
@@ -1,5 +1,5 @@
|
||||
plugins {
|
||||
id("net.kyori.blossom") version "1.3.0"
|
||||
id("net.kyori.blossom") version "1.3.1"
|
||||
}
|
||||
|
||||
repositories {
|
||||
@@ -8,13 +8,13 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
implementation(project(":miniplaceholders-api"))
|
||||
compileOnly("net.kyori:adventure-api:4.10.1")
|
||||
compileOnly("net.kyori:adventure-text-minimessage:4.10.1")
|
||||
compileOnly("net.kyori:adventure-api:4.11.0")
|
||||
compileOnly("net.kyori:adventure-text-minimessage:4.11.0")
|
||||
compileOnly("com.mojang:brigadier:1.0.18")
|
||||
}
|
||||
|
||||
blossom{
|
||||
replaceToken("{version}", version)
|
||||
replaceToken("{version}", project.version)
|
||||
replaceTokenIn("src/main/java/me/dreamerzero/miniplaceholders/common/PluginConstants.java")
|
||||
}
|
||||
|
||||
@@ -24,4 +24,10 @@ tasks {
|
||||
|
||||
options.release.set(17)
|
||||
}
|
||||
}
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes("Automatic-Module-Name" to "me.dreamerzero.miniplaceholders.common")
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,7 +2,7 @@ package me.dreamerzero.miniplaceholders.connect;
|
||||
|
||||
public enum InternalPlatform {
|
||||
|
||||
PAPER, VELOCITY;
|
||||
PAPER, VELOCITY, KRYPTON;
|
||||
|
||||
private static InternalPlatform actualPlatform;
|
||||
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
module me.dreamerzero.miniplaceholders.connect {
|
||||
exports me.dreamerzero.miniplaceholders.connect;
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
group = me.dreamerzero.miniplaceholders
|
||||
version = 1.3.0
|
||||
description = MiniPlaceholders
|
||||
@@ -0,0 +1,13 @@
|
||||
repositories {
|
||||
maven("https://repo.kryptonmc.org/releases")
|
||||
maven("https://s01.oss.sonatype.org/content/repositories/snapshots/")
|
||||
maven("https://repo.kryptonmc.org/snapshots")
|
||||
}
|
||||
|
||||
dependencies {
|
||||
compileOnly("org.kryptonmc:krypton-server:0.66.3")
|
||||
annotationProcessor("org.kryptonmc:annotation-processor:0.66.2")
|
||||
compileOnly(project(":miniplaceholders-common"))
|
||||
compileOnly(project(":miniplaceholders-api"))
|
||||
compileOnly(project(":miniplaceholders-connect"))
|
||||
}
|
||||
@@ -0,0 +1,97 @@
|
||||
package me.dreamerzero.miniplaceholders.krypton;
|
||||
|
||||
import org.apache.logging.log4j.Logger;
|
||||
import org.kryptonmc.api.Server;
|
||||
import org.kryptonmc.api.command.BrigadierCommand;
|
||||
import org.kryptonmc.api.command.Sender;
|
||||
import org.kryptonmc.api.entity.player.Player;
|
||||
import org.kryptonmc.api.event.Listener;
|
||||
import org.kryptonmc.api.event.server.ServerStartEvent;
|
||||
import org.kryptonmc.api.plugin.annotation.Plugin;
|
||||
import org.kryptonmc.krypton.KryptonServer;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
|
||||
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import me.dreamerzero.miniplaceholders.api.Expansion;
|
||||
import me.dreamerzero.miniplaceholders.api.utils.TagsUtils;
|
||||
import me.dreamerzero.miniplaceholders.common.PlaceholdersCommand;
|
||||
import me.dreamerzero.miniplaceholders.common.PlaceholdersPlugin;
|
||||
import me.dreamerzero.miniplaceholders.common.PluginConstants;
|
||||
import me.dreamerzero.miniplaceholders.connect.InternalPlatform;
|
||||
import me.lucko.spark.api.statistic.StatisticWindow;
|
||||
|
||||
@Plugin(
|
||||
name = "MiniPlaceholders",
|
||||
id = "miniplaceholders",
|
||||
version = PluginConstants.VERSION,
|
||||
authors = {"4drian3d"}
|
||||
)
|
||||
public class JavaKryptonPlugin implements PlaceholdersPlugin {
|
||||
private final KryptonServer server;
|
||||
private final Logger logger;
|
||||
|
||||
@Inject
|
||||
public JavaKryptonPlugin(Server server, Logger logger) {
|
||||
this.logger = logger;
|
||||
this.server = (KryptonServer)server;
|
||||
}
|
||||
|
||||
@Listener
|
||||
public void onServerStart(ServerStartEvent event) {
|
||||
logger.info("Starting MiniPlaceholders Krypton");
|
||||
|
||||
InternalPlatform.platform(InternalPlatform.KRYPTON);
|
||||
|
||||
this.loadDefaultExpansions();
|
||||
this.registerPlatformCommand();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void loadDefaultExpansions() {
|
||||
Expansion.builder("server")
|
||||
.globalPlaceholder("total_entities", (queue, ctx) -> {
|
||||
int entityCount = 0;
|
||||
for (var entry : server.getWorldManager().getWorlds().entrySet()) {
|
||||
entityCount += entry.getValue().entities().size();
|
||||
}
|
||||
return TagsUtils.staticTag(Component.text(entityCount));
|
||||
})
|
||||
.globalPlaceholder("total_chunks", (queque, ctx) -> {
|
||||
int chunkCount = 0;
|
||||
for(var entry : server.getWorldManager().getWorlds().entrySet()) {
|
||||
chunkCount += entry.getValue().chunks().size();
|
||||
}
|
||||
return TagsUtils.staticTag(Component.text(chunkCount));
|
||||
})
|
||||
.globalPlaceholder("name", TagsUtils.staticTag(server.getPlatform().getName()))
|
||||
.globalPlaceholder("online", (queue, ctx) -> TagsUtils.staticTag(Component.text(server.getPlayers().size())))
|
||||
.globalPlaceholder("version", TagsUtils.staticTag(server.getPlatform().getVersion()))
|
||||
.globalPlaceholder("max_players", TagsUtils.staticTag(Component.text(server.getMaxPlayers())))
|
||||
.globalPlaceholder("has_whitelist", (queue, ctx) -> TagsUtils.staticTag(Component.text(server.getPlayerManager().getWhitelistEnabled())))
|
||||
.globalPlaceholder("tps_1", (queue, ctx) -> TagsUtils.staticTag(Component.text(server.getSpark().tps().poll(StatisticWindow.TicksPerSecond.MINUTES_1))))
|
||||
.globalPlaceholder("tps_5", (queue, ctx) -> TagsUtils.staticTag(Component.text(server.getSpark().tps().poll(StatisticWindow.TicksPerSecond.MINUTES_5))))
|
||||
.globalPlaceholder("tps_15", (queue, ctx) -> TagsUtils.staticTag(Component.text(server.getSpark().tps().poll(StatisticWindow.TicksPerSecond.MINUTES_15))))
|
||||
.globalPlaceholder("mspt", (queue, ctx) -> TagsUtils.staticTag(Component.text(server.getSpark().mspt().poll(StatisticWindow.MillisPerTick.SECONDS_10).mean())))
|
||||
.build()
|
||||
.register();
|
||||
}
|
||||
|
||||
private static final PlainTextComponentSerializer SERIALIZER = PlainTextComponentSerializer.plainText();
|
||||
|
||||
@Override
|
||||
public void registerPlatformCommand() {
|
||||
final PlaceholdersCommand<Sender> command = new PlaceholdersCommand<>(
|
||||
() -> server.getPlayers()
|
||||
.stream()
|
||||
.map(Player::name)
|
||||
.map(SERIALIZER::serialize)
|
||||
.toList(),
|
||||
server::player);
|
||||
final BrigadierCommand brigadierCMD = BrigadierCommand.of(command.placeholderTestCommand("miniplaceholders"));
|
||||
|
||||
server.getCommandManager().register(brigadierCMD);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
# run-paper files
|
||||
/run
|
||||
+12
-6
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id("net.minecrell.plugin-yml.bukkit") version "0.5.1"
|
||||
id("io.papermc.paperweight.userdev") version "1.3.5"
|
||||
id("net.minecrell.plugin-yml.bukkit") version "0.5.2"
|
||||
id("io.papermc.paperweight.userdev") version "1.3.8"
|
||||
id("xyz.jpenilla.run-paper") version "1.0.6"
|
||||
}
|
||||
|
||||
@@ -8,18 +8,16 @@ dependencies {
|
||||
compileOnly(project(":miniplaceholders-common"))
|
||||
compileOnly(project(":miniplaceholders-api"))
|
||||
compileOnly(project(":miniplaceholders-connect"))
|
||||
paperDevBundle("1.18.2-R0.1-SNAPSHOT")
|
||||
paperDevBundle("1.19.1-R0.1-SNAPSHOT")
|
||||
}
|
||||
|
||||
val pluginVersion: String = version as String
|
||||
|
||||
bukkit {
|
||||
name = "MiniPlaceholders"
|
||||
main = "me.dreamerzero.miniplaceholders.paper.PaperPlugin"
|
||||
apiVersion = "1.18"
|
||||
website = "https://github.com/4drian3d/MiniPlaceholders"
|
||||
authors = listOf("4drian3d")
|
||||
version = pluginVersion
|
||||
version = project.version as String
|
||||
}
|
||||
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
@@ -33,5 +31,13 @@ tasks {
|
||||
|
||||
options.release.set(17)
|
||||
}
|
||||
runServer {
|
||||
minecraftVersion("1.19.1")
|
||||
}
|
||||
jar {
|
||||
manifest {
|
||||
attributes("Automatic-Module-Name" to "me.dreamerzero.miniplaceholders.paper")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,10 @@
|
||||
package me.dreamerzero.miniplaceholders.paper;
|
||||
|
||||
import java.math.RoundingMode;
|
||||
import java.text.NumberFormat;
|
||||
import java.text.DecimalFormat;
|
||||
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.craftbukkit.v1_18_R2.CraftServer;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import io.papermc.paper.datapack.Datapack;
|
||||
@@ -19,22 +17,19 @@ import net.kyori.adventure.text.Component;
|
||||
import net.kyori.adventure.text.TextComponent;
|
||||
import net.kyori.adventure.text.minimessage.tag.Tag;
|
||||
import net.minecraft.commands.CommandSourceStack;
|
||||
import net.minecraft.server.MinecraftServer;
|
||||
|
||||
public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin, Listener {
|
||||
private final NumberFormat tpsFormat = NumberFormat.getInstance();
|
||||
private final NumberFormat msptFormat = NumberFormat.getInstance();
|
||||
public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin {
|
||||
private final DecimalFormat tpsFormat = new DecimalFormat("###.##");
|
||||
private final DecimalFormat msptFormat = new DecimalFormat("###.###");
|
||||
|
||||
@Override
|
||||
public void onEnable(){
|
||||
this.getSLF4JLogger().info("Starting MiniPlaceholders Paper");
|
||||
InternalPlatform.platform(InternalPlatform.PAPER);
|
||||
this.getServer().getPluginManager().registerEvents(this, this);
|
||||
|
||||
tpsFormat.setRoundingMode(RoundingMode.DOWN);
|
||||
tpsFormat.setMaximumFractionDigits(2);
|
||||
|
||||
msptFormat.setRoundingMode(RoundingMode.DOWN);
|
||||
msptFormat.setMaximumFractionDigits(3);
|
||||
tpsFormat.setRoundingMode(RoundingMode.HALF_UP);
|
||||
msptFormat.setRoundingMode(RoundingMode.HALF_UP);
|
||||
|
||||
this.loadDefaultExpansions();
|
||||
this.registerPlatformCommand();
|
||||
@@ -48,9 +43,9 @@ public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin,
|
||||
.globalPlaceholder("version", TagsUtils.staticTag(this.getServer().getVersion()))
|
||||
.globalPlaceholder("max_players", (queue, ctx) -> TagsUtils.staticTag(Component.text(this.getServer().getMaxPlayers())))
|
||||
.globalPlaceholder("unique_joins", (queue, ctx) -> TagsUtils.staticTag(Component.text(this.getServer().getOfflinePlayers().length)))
|
||||
.globalPlaceholder("tps_1", (queue, ctx) -> TagsUtils.staticTag(tpsFormat.format(this.getCraftServer().getHandle().getServer().recentTps[0])))
|
||||
.globalPlaceholder("tps_5", (queue, ctx) -> TagsUtils.staticTag(tpsFormat.format(this.getCraftServer().getHandle().getServer().recentTps[1])))
|
||||
.globalPlaceholder("tps_15", (queue, ctx) -> TagsUtils.staticTag(tpsFormat.format(this.getCraftServer().getHandle().getServer().recentTps[2])))
|
||||
.globalPlaceholder("tps_1", (queue, ctx) -> TagsUtils.staticTag(tpsFormat.format(this.getServer().getTPS()[0])))
|
||||
.globalPlaceholder("tps_5", (queue, ctx) -> TagsUtils.staticTag(tpsFormat.format(this.getServer().getTPS()[1])))
|
||||
.globalPlaceholder("tps_15", (queue, ctx) -> TagsUtils.staticTag(tpsFormat.format(this.getServer().getTPS()[2])))
|
||||
.globalPlaceholder("has_whitelist", (queue, ctx) -> TagsUtils.staticTag(Component.text(this.getServer().hasWhitelist())))
|
||||
.globalPlaceholder("total_chunks", (queue, ctx) -> {
|
||||
int chunkCount = 0;
|
||||
@@ -80,9 +75,9 @@ public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin,
|
||||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("all")
|
||||
@SuppressWarnings({"sonarlint(java:s1874)", /*TODO: replace with Java(536871800) */ "all"})
|
||||
public void registerPlatformCommand() {
|
||||
this.getCraftServer().getServer()
|
||||
MinecraftServer.getServer()
|
||||
.vanillaCommandDispatcher
|
||||
.getDispatcher()
|
||||
.register(new PlaceholdersCommand<>(
|
||||
@@ -92,8 +87,4 @@ public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin,
|
||||
).placeholderTestBuilder("miniplaceholders")
|
||||
);
|
||||
}
|
||||
|
||||
private CraftServer getCraftServer(){
|
||||
return (CraftServer)this.getServer();
|
||||
}
|
||||
}
|
||||
+6
-10
@@ -7,14 +7,10 @@ pluginManagement {
|
||||
|
||||
rootProject.name = "miniplaceholders-parent"
|
||||
|
||||
include("miniplaceholders-connect")
|
||||
include("miniplaceholders-api")
|
||||
include("miniplaceholders-common")
|
||||
include("miniplaceholders-paper")
|
||||
include("miniplaceholders-velocity")
|
||||
val modules = listOf("connect", "api", "common", "paper", "velocity", "krypton")
|
||||
|
||||
modules.forEach {
|
||||
include("miniplaceholders-$it")
|
||||
project(":miniplaceholders-$it").projectDir = file(it)
|
||||
}
|
||||
|
||||
project(":miniplaceholders-connect").projectDir = file("connect")
|
||||
project(":miniplaceholders-api").projectDir = file("api")
|
||||
project(":miniplaceholders-common").projectDir = file("common")
|
||||
project(":miniplaceholders-velocity").projectDir = file("velocity")
|
||||
project(":miniplaceholders-paper").projectDir = file("paper")
|
||||
@@ -8,8 +8,16 @@ dependencies {
|
||||
|
||||
java.toolchain.languageVersion.set(JavaLanguageVersion.of(17))
|
||||
|
||||
tasks.compileJava {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
tasks {
|
||||
compileJava {
|
||||
options.encoding = Charsets.UTF_8.name()
|
||||
|
||||
options.release.set(17)
|
||||
}
|
||||
options.release.set(17)
|
||||
}
|
||||
|
||||
jar {
|
||||
manifest {
|
||||
attributes("Automatic-Module-Name" to "me.dreamerzero.miniplaceholders.velocity")
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user