Compare commits

...
9 Commits
Author SHA1 Message Date
4drian3d 194801df6b release: 1.3.1 Version 2022-08-26 17:09:36 +00:00
4drian3d 06e927045e fix: Fixed subcommands permissions
resolves #13
2022-08-26 17:09:10 +00:00
4drian3d 5e8a881b51 release: 1.3.0 Version
misc(paper): Removed unnecesary Listener implementation
2022-08-25 14:13:16 +00:00
4drian3d 8bb9bafb8b feat(krypton): Implement TPS and MSPT placeholders 2022-08-25 00:57:52 +00:00
Adrian 74f14f139c Merge pull request #8 from MiniPlaceholders/feat/krypton-implementation 2022-08-24 16:10:15 -05:00
Adrian 45b2fbe977 Merge branch 'main' into feat/krypton-implementation 2022-08-24 16:08:01 -05:00
4drian3d df04f51d60 feat: Finish Krypton implementation 2022-08-24 21:04:51 +00:00
Adrian3d04 927563f749 feat(krypton): Try Kotlin plugin implementation 2022-07-31 17:36:57 +00:00
Adrian3d04 225bafeaaa feat: Implement Krypton Platform 2022-07-30 21:15:11 +00:00
11 changed files with 144 additions and 22 deletions

No files matched your search

+2 -2
View File
@@ -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
@@ -2,7 +2,6 @@ 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;
@@ -14,6 +13,8 @@ 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
*
@@ -36,9 +37,11 @@ public final class MiniPlaceholders {
* @since 1.0.0
*/
public static @NotNull Platform getPlatform() {
return InternalPlatform.platform() == InternalPlatform.PAPER
? Platform.PAPER
: Platform.VELOCITY;
switch (InternalPlatform.platform()) {
case PAPER: return Platform.PAPER;
case VELOCITY: return Platform.VELOCITY;
default: return Platform.KRYPTON;
}
}
/**
@@ -73,7 +76,7 @@ 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();
for (Expansion expansion : expansions) {
@@ -97,8 +100,8 @@ 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 builder = TagResolver.builder();
for (final Expansion expansion : expansions) {
@@ -131,7 +134,7 @@ 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) {
@@ -165,8 +168,8 @@ 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) {
@@ -5,5 +5,7 @@ public enum Platform {
/**Paper Platform */
PAPER,
/**Velocity Platform */
VELOCITY
VELOCITY,
/**Krypton Platform */
KRYPTON;
}
+1
View File
@@ -15,6 +15,7 @@ dependencies {
shadow(project(":miniplaceholders-common"))
shadow(project(":miniplaceholders-velocity"))
shadow(project(":miniplaceholders-paper", "reobf"))
shadow(project(":miniplaceholders-krypton"))
}
subprojects {
@@ -50,7 +50,7 @@ public class PlaceholdersCommand<A> {
.requires(a -> getAudience(a).pointers().supports(PermissionChecker.POINTER))
.executes(cmd -> {
Audience source = getAudience(cmd.getSource());
if(source.pointers().get(PermissionChecker.POINTER).orElse(null).test("miniplaceholders.command")){
if (source.pointers().get(PermissionChecker.POINTER).get().test("miniplaceholders.command")){
source.sendMessage(
Component.text()
.append(HEADER).append(Component.newline())
@@ -70,6 +70,10 @@ public class PlaceholdersCommand<A> {
return 1;
})
.then(LiteralArgumentBuilder.<A>literal("help")
.requires(cmd -> getAudience(cmd)
.get(PermissionChecker.POINTER)
.map(checker -> checker.test("miniplaceholders.command.help"))
.orElse(false))
.executes(cmd -> {
getAudience(cmd.getSource()).sendMessage(
Component.text()
@@ -84,6 +88,10 @@ public class PlaceholdersCommand<A> {
})
)
.then(LiteralArgumentBuilder.<A>literal("parse")
.requires(cmd -> getAudience(cmd)
.get(PermissionChecker.POINTER)
.map(checker -> checker.test("miniplaceholders.command.parse"))
.orElse(false))
.then(LiteralArgumentBuilder.<A>literal("me")
.then(RequiredArgumentBuilder.<A, String>argument("selfStringToParse", StringArgumentType.string())
.executes(cmd -> {
@@ -134,7 +142,7 @@ public class PlaceholdersCommand<A> {
}
private Audience getAudience(A possibleAudience){
if(possibleAudience instanceof Audience audience){
if (possibleAudience instanceof Audience audience){
return audience;
}
Audience audience = fromAToAudience.apply(possibleAudience);
@@ -2,7 +2,7 @@ package me.dreamerzero.miniplaceholders.connect;
public enum InternalPlatform {
PAPER, VELOCITY;
PAPER, VELOCITY, KRYPTON;
private static InternalPlatform actualPlatform;
+1 -1
View File
@@ -1,3 +1,3 @@
group = me.dreamerzero.miniplaceholders
version = 1.2.1
version = 1.3.1
description = MiniPlaceholders
+13
View File
@@ -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);
}
}
@@ -5,7 +5,6 @@ import java.text.DecimalFormat;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.bukkit.event.Listener;
import org.bukkit.plugin.java.JavaPlugin;
import io.papermc.paper.datapack.Datapack;
@@ -20,7 +19,7 @@ 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 {
public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin {
private final DecimalFormat tpsFormat = new DecimalFormat("###.##");
private final DecimalFormat msptFormat = new DecimalFormat("###.###");
@@ -28,7 +27,6 @@ public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin,
public void onEnable(){
this.getSLF4JLogger().info("Starting MiniPlaceholders Paper");
InternalPlatform.platform(InternalPlatform.PAPER);
this.getServer().getPluginManager().registerEvents(this, this);
tpsFormat.setRoundingMode(RoundingMode.HALF_UP);
msptFormat.setRoundingMode(RoundingMode.HALF_UP);
@@ -77,7 +75,7 @@ public final class PaperPlugin extends JavaPlugin implements PlaceholdersPlugin,
}
@Override
@SuppressWarnings({"sonarlint(java:s1874)", "deprecation", /*TODO: replace with Java(536871800) */ "all"})
@SuppressWarnings({"sonarlint(java:s1874)", /*TODO: replace with Java(536871800) */ "all"})
public void registerPlatformCommand() {
MinecraftServer.getServer()
.vanillaCommandDispatcher
+1 -1
View File
@@ -7,7 +7,7 @@ pluginManagement {
rootProject.name = "miniplaceholders-parent"
val modules = listOf("connect", "api", "common", "paper", "velocity")
val modules = listOf("connect", "api", "common", "paper", "velocity", "krypton")
modules.forEach {
include("miniplaceholders-$it")