Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 2 additions & 4 deletions buildSrc/src/main/kotlin/Versions.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
object Versions {

const val SPIGOT_API = "1.21.3-R0.1-SNAPSHOT"
// Keep this version for Paper APIs used by modern EternalCore features.
const val PAPER_API = "1.21.3-R0.1-SNAPSHOT"

const val ETERNALCODE_COMMONS = "1.4.1"
Expand All @@ -11,9 +11,7 @@ object Versions {
const val DYNMAP_API = "3.7-beta-6"
const val LOMBOK = "1.18.46"

const val PAPERLIB = "1.0.8"
const val ADVENTURE_TEXT_MINIMESSAGE = "5.1.1"
const val ADVENTURE_PLATFORM = "4.4.1"
const val ADVENTURE_TEXT_MINIMESSAGE = "4.26.1"
const val OKAERI_CONFIGS = "6.0.0-beta.27"

const val MARIA_DB = "3.5.8"
Expand Down
3 changes: 1 addition & 2 deletions buildSrc/src/main/kotlin/eternalcode-java-test.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,7 @@ dependencies {
testRuntimeOnly("org.junit.platform:junit-platform-launcher")

testImplementation("org.mockito:mockito-core:${Versions.MOCKITO_CORE}")
testImplementation("net.kyori:adventure-platform-facet:${Versions.ADVENTURE_PLATFORM}")
testImplementation("org.spigotmc:spigot-api:${Versions.SPIGOT_API}")
testImplementation("io.papermc.paper:paper-api:${Versions.PAPER_API}")
}

tasks.getByName<Test>("test") {
Expand Down
4 changes: 2 additions & 2 deletions eternalcore-api-example/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ version = "1.3.2"
repositories {
mavenCentral()

maven("https://hub.spigotmc.org/nexus/content/repositories/snapshots/") // spigot
maven("https://repo.papermc.io/repository/maven-public/") // paper
maven("https://repo.panda-lang.org/releases/") // expressible

// maven("https://repo.eternalcode.pl/releases/") // eternalcode
Expand All @@ -22,7 +22,7 @@ repositories {
dependencies {
implementation("dev.rollczi:litecommands-bukkit:${Versions.LITE_COMMANDS}")

compileOnly("org.spigotmc:spigot-api:${Versions.SPIGOT_API}")
compileOnly("io.papermc.paper:paper-api:${Versions.PAPER_API}")
compileOnly(project(":eternalcore-api")) // <-- This is the eternalcore-api module,
// replace it with compileOnly("com.eternalcode:eternalcore-api:<version>")
}
Expand Down
2 changes: 1 addition & 1 deletion eternalcore-api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ plugins {
}

dependencies {
compileOnly("org.spigotmc:spigot-api:${Versions.SPIGOT_API}")
compileOnlyApi("io.papermc.paper:paper-api:${Versions.PAPER_API}")
api("org.jetbrains:annotations:${Versions.JETBRAINS_ANNOTATIONS}")
}
21 changes: 9 additions & 12 deletions eternalcore-core/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,14 +8,13 @@ plugins {
dependencies {
// modules
implementation(project(":eternalcore-api"))
implementation(project(":eternalcore-paper"))
api(project(":eternalcore-docs-api"))

// Base libraries
compileOnly("org.jetbrains:annotations:${Versions.JETBRAINS_ANNOTATIONS}")

// Minecraft & Bridges API
compileOnlyApi("org.spigotmc:spigot-api:${Versions.SPIGOT_API}")
compileOnlyApi("io.papermc.paper:paper-api:${Versions.PAPER_API}")
compileOnly("me.clip:placeholderapi:${Versions.PLACEHOLDER_API}")
compileOnly("us.dynmap:dynmap-api:${Versions.DYNMAP_API}")
compileOnly("us.dynmap:DynmapCoreAPI:${Versions.DYNMAP_API}")
Expand All @@ -29,16 +28,14 @@ dependencies {
testImplementation("org.awaitility:awaitility:${Versions.AWAITILITY}")
}

eternalShadow {
// Paper and Adventure libraries
library("io.papermc:paperlib:${Versions.PAPERLIB}")
library("net.kyori:adventure-text-minimessage:${Versions.ADVENTURE_TEXT_MINIMESSAGE}")
library("net.kyori:adventure-platform-bukkit:${Versions.ADVENTURE_PLATFORM}")
libraryRelocate(
"io.papermc.lib",
"net.kyori",
)
configurations.configureEach {
exclude(group = "net.kyori", module = "adventure-platform-api")
exclude(group = "net.kyori", module = "adventure-platform-bukkit")
exclude(group = "net.kyori", module = "adventure-platform-facet")
exclude(group = "net.kyori", module = "adventure-platform-viaversion")
}

eternalShadow {
// configuration
library("eu.okaeri:okaeri-configs-core:${Versions.OKAERI_CONFIGS}")
library("eu.okaeri:okaeri-configs-yaml-snakeyaml:${Versions.OKAERI_CONFIGS}")
Expand All @@ -48,6 +45,7 @@ eternalShadow {
)

// Multification
library("com.eternalcode:multification-paper:${Versions.MULTIFICATION}")
library("com.eternalcode:multification-bukkit:${Versions.MULTIFICATION}")
library("com.eternalcode:multification-okaeri:${Versions.MULTIFICATION}")
libraryRelocate(
Expand Down Expand Up @@ -88,7 +86,6 @@ eternalShadow {
library("dev.rollczi:liteskullapi:${Versions.LITE_SKULL_API}")
library("dev.rollczi:litecommands-bukkit:${Versions.LITE_COMMANDS}")
library("dev.rollczi:litecommands-folia:${Versions.LITE_COMMANDS}")
library("dev.rollczi:litecommands-adventure-platform:${Versions.LITE_COMMANDS}")
libraryRelocate(
"dev.rollczi.litecommands",
"dev.rollczi.liteskullapi"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
package com.eternalcode.core;

import com.google.common.base.Stopwatch;
import io.papermc.lib.PaperLib;
import io.papermc.lib.environments.Environment;

import java.util.concurrent.TimeUnit;
import java.util.logging.Logger;
import org.bukkit.Bukkit;

class EternalCoreEnvironment {

Expand All @@ -23,22 +21,8 @@ void initialize() {
}

private void checkSoftware() {
Environment environment = PaperLib.getEnvironment();

if (!environment.isSpigot()) {
this.logger.warning("Your server is running on unsupported software, please use Spigot/Paper or their other 1.20+ forks");
this.logger.warning("We recommend using Paper, download it from https://papermc.io/downloads");
this.logger.warning("WARNING: Supported Minecraft versions are 1.17-1.20x");
return;
}

if (!environment.isVersion(17)) {
this.logger.warning("EternalCore no longer supports your version, be aware that there may be bugs!");
return;
}

this.logger.info("Your server is running on supported software, congratulations!");
this.logger.info("Server version: " + environment.getMinecraftVersion());
this.logger.info("Your server is running on supported Paper API software");
this.logger.info("Server version: " + Bukkit.getBukkitVersion());
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,11 @@
import com.eternalcode.commons.adventure.AdventureUrlPostProcessor;
import com.eternalcode.core.injector.annotations.Bean;
import com.eternalcode.core.injector.annotations.component.Setup;
import net.kyori.adventure.platform.AudienceProvider;
import net.kyori.adventure.platform.bukkit.BukkitAudiences;
import net.kyori.adventure.text.minimessage.MiniMessage;
import org.bukkit.plugin.Plugin;

@Setup
class AdventureSetup {

@Bean
AudienceProvider audienceProvider(Plugin plugin) {
return BukkitAudiences.builder(plugin).build();
}

@Bean
MiniMessage miniMessage() {
return MiniMessage.builder()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,13 @@
package com.eternalcode.core.compatibility;

import io.papermc.lib.PaperLib;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import org.bukkit.Bukkit;

public class CompatibilityService {

private static final Pattern MINECRAFT_VERSION_PATTERN = Pattern.compile("^(\\d+)\\.(\\d+)(?:\\.(\\d+))?");

public boolean isCompatible(Class<?> type) {
Compatibility compatibility = type.getAnnotation(Compatibility.class);
if (compatibility == null) {
Expand All @@ -13,18 +17,66 @@ public boolean isCompatible(Class<?> type) {
Version from = compatibility.from();
Version to = compatibility.to();

int minor = PaperLib.getMinecraftVersion();
int patch = PaperLib.getMinecraftPatchVersion();
MinecraftVersion minecraftVersion = parseMinecraftVersion(Bukkit.getMinecraftVersion());

return isCompatibleFrom(from, minecraftVersion) && isCompatibleTo(to, minecraftVersion);
}

static MinecraftVersion parseMinecraftVersion(String bukkitVersion) {
Matcher matcher = MINECRAFT_VERSION_PATTERN.matcher(bukkitVersion);
if (!matcher.find()) {
return new MinecraftVersion(0, 0, 0);
}

int major = Integer.parseInt(matcher.group(1));
int minor = Integer.parseInt(matcher.group(2));
String patchGroup = matcher.group(3);
int patch = patchGroup == null ? 0 : Integer.parseInt(patchGroup);

return new MinecraftVersion(major, minor, patch);
}

boolean isCompatibleTo(Version to, MinecraftVersion current) {
if (current.major() < to.major()) {
return true;
}

if (current.major() > to.major()) {
return false;
}

if (current.minor() < to.minor()) {
return true;
}

if (current.minor() > to.minor()) {
return false;
}

return isCompatibleFrom(from, minor, patch) && isCompatibleTo(to, minor, patch);
return current.patch() <= to.patch();
}

private boolean isCompatibleTo(Version to, int minor, int patch) {
return minor < to.minor() || minor == to.minor() && patch <= to.patch();
boolean isCompatibleFrom(Version from, MinecraftVersion current) {
if (current.major() > from.major()) {
return true;
}

if (current.major() < from.major()) {
return false;
}

if (current.minor() > from.minor()) {
return true;
}

if (current.minor() < from.minor()) {
return false;
}

return current.patch() >= from.patch();
}

private boolean isCompatibleFrom(Version from, int minor, int patch) {
return minor > from.minor() || minor == from.minor() && patch >= from.patch();
record MinecraftVersion(int major, int minor, int patch) {
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
@Target(ElementType.FIELD)
public @interface Version {

int major() default 1;
int minor();
int patch();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.eternalcode.core.configuration.migrations.Migrations;
import com.eternalcode.core.configuration.serializer.LanguageSerializer;
import com.eternalcode.core.configuration.transformer.MaterialTransformer;
import com.eternalcode.core.configuration.transformer.PositionTransformer;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.injector.annotations.component.Service;
Expand Down Expand Up @@ -51,6 +52,7 @@ public <T extends OkaeriConfig & EternalConfigurationFile> T load(T config) {
migrator.runMigrations(file);

OkaeriSerdesPack serdesPack = registry -> {
registry.register(new MaterialTransformer());
registry.register(new PositionTransformer());
registry.register(new LanguageSerializer());
registry.register(new MultificationNoticeSerializer(this.resolverRegistry));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.eternalcode.core.configuration.contextual;

import com.cryptomorin.xseries.XMaterial;
import com.eternalcode.core.util.MaterialUtil;
import eu.okaeri.configs.OkaeriConfig;
import org.bukkit.Material;

Expand All @@ -11,7 +13,7 @@ public class ConfigItem extends OkaeriConfig {

public String name = "&6Item";
public List<String> lore = Collections.singletonList("&7Default lore");
public Material material = Material.PLAYER_HEAD;
public Material material = MaterialUtil.parseRequired(XMaterial.PLAYER_HEAD);
public String texture = "none";
public boolean glow = false;
public int slot = 0;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.eternalcode.core.configuration.transformer;

import com.eternalcode.core.util.MaterialUtil;
import eu.okaeri.configs.serdes.BidirectionalTransformer;
import eu.okaeri.configs.serdes.SerdesContext;
import eu.okaeri.configs.schema.GenericsPair;
import lombok.NonNull;
import org.bukkit.Material;

public class MaterialTransformer extends BidirectionalTransformer<Material, String> {

@Override
public GenericsPair<Material, String> getPair() {
return this.genericsPair(Material.class, String.class);
}

@Override
public String leftToRight(@NonNull Material material, @NonNull SerdesContext context) {
return material.name();
}

@Override
public Material rightToLeft(@NonNull String materialName, @NonNull SerdesContext context) {
return MaterialUtil.parseOrFallback(materialName);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.eternalcode.annotations.scan.command.DescriptionDocs;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.notice.NoticeService;
import com.eternalcode.paper.PaperContainer;
import dev.rollczi.litecommands.annotations.argument.Arg;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Sender;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.eternalcode.annotations.scan.command.DescriptionDocs;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.notice.NoticeService;
import com.eternalcode.paper.PaperContainer;
import dev.rollczi.litecommands.annotations.argument.Arg;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Sender;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.eternalcode.annotations.scan.command.DescriptionDocs;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.notice.NoticeService;
import com.eternalcode.paper.PaperContainer;
import dev.rollczi.litecommands.annotations.argument.Arg;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Sender;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@
import com.eternalcode.annotations.scan.command.DescriptionDocs;
import com.eternalcode.core.injector.annotations.Inject;
import com.eternalcode.core.notice.NoticeService;
import com.eternalcode.paper.PaperContainer;
import dev.rollczi.litecommands.annotations.argument.Arg;
import dev.rollczi.litecommands.annotations.command.Command;
import dev.rollczi.litecommands.annotations.context.Sender;
Expand Down
Loading