Skip to content

Commit 4c60f85

Browse files
authored
Merge pull request #33 from OneLiteFeatherNET/develop
1.1.0
2 parents 217fd75 + 048f4e3 commit 4c60f85

15 files changed

+505
-82
lines changed

.github/workflows/publish.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ on:
33
push:
44
branches:
55
- master
6-
- dev
6+
- develop
77
jobs:
88
build:
99
# Run on all label events (won't be duplicated) or all push events or on PR syncs not from the same repo

build.gradle.kts

+56-26
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
import io.papermc.hangarpublishplugin.model.Platforms
2+
import kotlin.system.exitProcess
23
import net.minecrell.pluginyml.bukkit.BukkitPluginDescription
34
import net.minecrell.pluginyml.paper.PaperPluginDescription
45
import xyz.jpenilla.runpaper.task.RunServer
5-
import kotlin.system.exitProcess
66

77
plugins {
8-
id("idea")
98
id("java")
10-
id("java-library")
11-
id("olf.build-logic")
12-
9+
alias(libs.plugins.shadowJar)
10+
alias(libs.plugins.publishdata)
11+
alias(libs.plugins.paper.run)
12+
alias(libs.plugins.paper.yml)
13+
alias(libs.plugins.hangar)
14+
alias(libs.plugins.modrinth)
1315
alias(libs.plugins.spotless)
14-
alias(libs.plugins.minotaur)
15-
alias(libs.plugins.shadow)
16-
alias(libs.plugins.hangar.publish.plugin)
17-
alias(libs.plugins.plugin.yml.paper)
18-
alias(libs.plugins.run.paper)
16+
id("olf.build-logic")
17+
`maven-publish`
1918
}
2019

2120
if (!File("$rootDir/.git").exists()) {
@@ -30,43 +29,45 @@ if (!File("$rootDir/.git").exists()) {
3029

3130
allprojects {
3231
group = "net.onelitefeather.bettergopaint"
33-
version = property("projectVersion") as String // from gradle.properties
32+
version = "1.1.0"
3433
}
3534
group = "net.onelitefeather.bettergopaint"
3635

3736
val supportedMinecraftVersions = listOf(
38-
"1.20",
39-
"1.20.1",
40-
"1.20.2",
41-
"1.20.3",
42-
"1.20.4",
43-
"1.20.5",
44-
"1.20.6"
37+
"1.21"
4538
)
4639

4740
repositories {
4841
mavenCentral()
4942
maven("https://papermc.io/repo/repository/maven-public/")
43+
maven("https://maven.enginehub.org/repo/")
5044
}
5145

5246
dependencies {
5347
// Paper / Spigot
5448
compileOnly(libs.paper)
5549
// Fawe / WorldEdit
5650
implementation(platform(libs.fawe.bom))
57-
compileOnlyApi(libs.fawe.bukkit)
51+
compileOnly(libs.fawe.bukkit)
5852
// Utils
5953
implementation(libs.serverlib)
6054
implementation(libs.paperlib)
55+
implementation(libs.semver)
6156
// Stats
6257
implementation(libs.bstats)
6358
// Commands
64-
implementation(libs.cloud.annotations)
65-
implementation(libs.cloud.minecraft.extras)
66-
implementation(libs.cloud.paper)
67-
annotationProcessor(libs.cloud.annotations)
59+
implementation(libs.cloud.command.annotations)
60+
implementation(libs.cloud.command.extras)
61+
implementation(libs.cloud.command.paper)
62+
annotationProcessor(libs.cloud.command.annotations)
6863
}
6964

65+
publishData {
66+
useEldoNexusRepos(false)
67+
publishTask("shadowJar")
68+
}
69+
70+
7071
paper {
7172
name = "BetterGoPaint"
7273
main = "net.onelitefeather.bettergopaint.BetterGoPaint"
@@ -87,6 +88,12 @@ paper {
8788
register("bettergopaint.command.admin.reload") {
8889
default = BukkitPluginDescription.Permission.Default.OP
8990
}
91+
register("bettergopaint.notify.admin.update") {
92+
default = BukkitPluginDescription.Permission.Default.OP
93+
}
94+
register("bettergopaint.notify.disable.donation") {
95+
default = BukkitPluginDescription.Permission.Default.FALSE
96+
}
9097
register("bettergopaint.use") {
9198
default = BukkitPluginDescription.Permission.Default.OP
9299
}
@@ -145,7 +152,7 @@ tasks {
145152
}
146153

147154
val branch = rootProject.branchName()
148-
val baseVersion = project.version as String
155+
val baseVersion = publishData.getVersion(false)
149156
val isRelease = !baseVersion.contains('-')
150157
val isMainBranch = branch == "master"
151158
if (!isRelease || isMainBranch) { // Only publish releases from the main branch
@@ -159,7 +166,7 @@ if (!isRelease || isMainBranch) { // Only publish releases from the main branch
159166
hangarPublish {
160167
publications.register("BetterGoPaint") {
161168
version.set(suffixedVersion)
162-
channel.set(if (isRelease) "Release" else if (isMainBranch) "Snapshot" else "Alpha")
169+
channel.set(if (isRelease) "Release" else "Snapshot")
163170
changelog.set(changelogContent)
164171
apiKey.set(System.getenv("HANGAR_SECRET"))
165172
id.set("BetterGoPaint")
@@ -175,7 +182,7 @@ if (!isRelease || isMainBranch) { // Only publish releases from the main branch
175182
modrinth {
176183
token.set(System.getenv("MODRINTH_TOKEN"))
177184
projectId.set("qf7sNg9A")
178-
versionType.set(if (isRelease) "release" else if (isMainBranch) "beta" else "alpha")
185+
versionType.set(if (isRelease) "release" else "beta")
179186
versionNumber.set(suffixedVersion)
180187
versionName.set(suffixedVersion)
181188
changelog.set(changelogContent)
@@ -186,3 +193,26 @@ if (!isRelease || isMainBranch) { // Only publish releases from the main branch
186193
loaders.add("folia")
187194
}
188195
}
196+
197+
publishing {
198+
publications.create<MavenPublication>("maven") {
199+
// Configure our maven publication
200+
publishData.configurePublication(this)
201+
}
202+
203+
repositories {
204+
// We add EldoNexus as our repository. The used url is defined by the publish data.
205+
maven {
206+
authentication {
207+
credentials(PasswordCredentials::class) {
208+
// Those credentials need to be set under "Settings -> Secrets -> Actions" in your repository
209+
username = System.getenv("ELDO_USERNAME")
210+
password = System.getenv("ELDO_PASSWORD")
211+
}
212+
}
213+
214+
name = "EldoNexus"
215+
setUrl(publishData.getRepository())
216+
}
217+
}
218+
}

crowdin.yml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
files:
2+
- source: src/main/resources/bettergopaint.properties
3+
translation: /src/main/resources/bettergopaint_%locale_with_underscore%.properties

gradle/libs.versions.toml

-25
This file was deleted.

settings.gradle.kts

+52
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,54 @@
11
rootProject.name = "BetterGoPaint"
22
includeBuild("build-logic")
3+
4+
pluginManagement {
5+
repositories {
6+
maven("https://eldonexus.de/repository/maven-public/")
7+
gradlePluginPortal()
8+
}
9+
}
10+
11+
dependencyResolutionManagement {
12+
versionCatalogs {
13+
create("libs") {
14+
version("publishdata", "1.4.0")
15+
version("modrinth", "2.+")
16+
version("hangar", "0.1.2")
17+
version("paper.yml", "0.6.0")
18+
version("paper.run", "2.3.0")
19+
version("shadowJar", "8.1.1")
20+
version("intellectualsites", "1.51")
21+
22+
version("paper", "1.21.3-R0.1-SNAPSHOT")
23+
version("bstats", "3.0.2")
24+
25+
version("cloudcommand", "2.0.0-SNAPSHOT")
26+
27+
version("adventure", "4.17.0")
28+
version("semver", "0.10.2")
29+
30+
library("paper", "io.papermc.paper", "paper-api").versionRef("paper")
31+
library("minimessage", "net.kyori", "adventure-text-minimessage").versionRef("adventure")
32+
library("bstats", "org.bstats", "bstats-bukkit").versionRef("bstats")
33+
34+
library("fawe.bom", "com.intellectualsites.bom", "bom-newest").versionRef("intellectualsites")
35+
library("fawe.bukkit", "com.fastasyncworldedit", "FastAsyncWorldEdit-Bukkit").withoutVersion()
36+
library("serverlib", "dev.notmyfault.serverlib", "ServerLib").withoutVersion()
37+
library("paperlib", "io.papermc", "paperlib").withoutVersion()
38+
39+
library("cloud.command.paper", "org.incendo", "cloud-paper").versionRef("cloudcommand")
40+
library("cloud.command.annotations", "org.incendo", "cloud-annotations").versionRef("cloudcommand")
41+
library("cloud.command.extras", "org.incendo", "cloud-minecraft-extras").versionRef("cloudcommand")
42+
43+
library("semver", "com.github.zafarkhaja", "java-semver").versionRef("semver")
44+
45+
plugin("publishdata","de.chojo.publishdata").versionRef("publishdata")
46+
plugin("modrinth", "com.modrinth.minotaur").versionRef("modrinth")
47+
plugin("hangar", "io.papermc.hangar-publish-plugin").versionRef("hangar")
48+
plugin("paper.yml", "net.minecrell.plugin-yml.paper").versionRef("paper.yml")
49+
plugin("paper.run", "xyz.jpenilla.run-paper").versionRef("paper.run")
50+
plugin("shadowJar", "com.github.johnrengelman.shadow").versionRef("shadowJar")
51+
plugin("spotless", "com.diffplug.spotless").version("6.18.0")
52+
}
53+
}
54+
}

src/main/java/net/onelitefeather/bettergopaint/BetterGoPaint.java

+67-6
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,21 @@
1919
package net.onelitefeather.bettergopaint;
2020

2121
import com.fastasyncworldedit.core.Fawe;
22+
import net.kyori.adventure.key.Key;
23+
import net.kyori.adventure.text.Component;
2224
import net.kyori.adventure.text.minimessage.MiniMessage;
25+
import net.kyori.adventure.translation.GlobalTranslator;
26+
import net.kyori.adventure.translation.TranslationRegistry;
27+
import net.kyori.adventure.util.UTF8ResourceBundleControl;
2328
import net.onelitefeather.bettergopaint.brush.PlayerBrushManager;
2429
import net.onelitefeather.bettergopaint.command.GoPaintCommand;
2530
import net.onelitefeather.bettergopaint.command.ReloadCommand;
2631
import net.onelitefeather.bettergopaint.listeners.ConnectListener;
2732
import net.onelitefeather.bettergopaint.listeners.InteractListener;
2833
import net.onelitefeather.bettergopaint.listeners.InventoryListener;
2934
import net.onelitefeather.bettergopaint.objects.other.Settings;
35+
import net.onelitefeather.bettergopaint.service.UpdateService;
36+
import net.onelitefeather.bettergopaint.translations.PluginTranslationRegistry;
3037
import org.bstats.bukkit.Metrics;
3138
import org.bstats.charts.SimplePie;
3239
import org.bukkit.Bukkit;
@@ -44,19 +51,24 @@
4451
import org.jetbrains.annotations.Nullable;
4552

4653
import java.io.File;
54+
import java.io.IOException;
55+
import java.net.URL;
56+
import java.net.URLClassLoader;
57+
import java.nio.file.Files;
58+
import java.nio.file.Path;
59+
import java.util.HashSet;
60+
import java.util.Locale;
4761
import java.util.Objects;
62+
import java.util.ResourceBundle;
4863
import java.util.logging.Level;
4964

5065
public class BetterGoPaint extends JavaPlugin implements Listener {
5166

5267
public static final String PAPER_DOCS = "https://jd.papermc.io/paper/1.20.6/org/bukkit/Material.html#enum-constant-summary";
53-
public static final String USE_PERMISSION = "bettergopaint.use";
54-
public static final String ADMIN_PERMISSION = "bettergopaint.admin";
55-
public static final String RELOAD_PERMISSION = "bettergopaint.command.admin.reload";
56-
public static final String WORLD_BYPASS_PERMISSION = "bettergopaint.world.bypass";
5768

5869
private final PlayerBrushManager brushManager = new PlayerBrushManager();
5970
private final Metrics metrics = new Metrics(this, 18734);
71+
private UpdateService updateService;
6072

6173
@Override
6274
public void onLoad() {
@@ -81,6 +93,30 @@ public void onEnable() {
8193

8294
reloadConfig();
8395

96+
final TranslationRegistry translationRegistry = new PluginTranslationRegistry(TranslationRegistry.create(Key.key("bettergopaint", "translations")));
97+
translationRegistry.defaultLocale(Locale.US);
98+
Path langFolder = getDataFolder().toPath().resolve("lang");
99+
var languages = new HashSet<>(Settings.settings().generic.LANGUAGES);
100+
languages.add("en-US");
101+
if (Files.exists(langFolder)) {
102+
try (var urlClassLoader = new URLClassLoader(new URL[]{langFolder.toUri().toURL()})) {
103+
languages.stream().map(Locale::forLanguageTag).forEach(r -> {
104+
var bundle = ResourceBundle.getBundle("bettergopaint", r, urlClassLoader, UTF8ResourceBundleControl.get());
105+
translationRegistry.registerAll(r, bundle, false);
106+
});
107+
} catch (IOException e) {
108+
throw new RuntimeException(e);
109+
}
110+
} else {
111+
languages.stream().map(Locale::forLanguageTag).forEach(r -> {
112+
var bundle = ResourceBundle.getBundle("bettergopaint", r, UTF8ResourceBundleControl.get());
113+
translationRegistry.registerAll(r, bundle, false);
114+
});
115+
}
116+
GlobalTranslator.translator().addSource(translationRegistry);
117+
donationInformation();
118+
119+
84120
Material brush = Settings.settings().generic.DEFAULT_BRUSH;
85121
if (!brush.isItem()) {
86122
getComponentLogger().error("{} is not a valid default brush, it has to be an item", brush.name());
@@ -95,17 +131,34 @@ public void onEnable() {
95131

96132
registerListeners();
97133
registerCommands();
134+
updateService();
98135
}
99136

100137
@Override
101138
public void onDisable() {
102139
metrics.shutdown();
140+
this.updateService.shutdown();
103141
}
104142

105143
public void reloadConfig() {
106-
Settings.settings().reload(this, new File(getDataFolder(), "config.yml"));
144+
try {
145+
Files.createDirectories(getDataFolder().toPath());
146+
final Path resolve = getDataFolder().toPath().resolve("config.yml");
147+
Settings.settings().save(resolve.toFile());
148+
Settings.settings().load(resolve.toFile());
149+
} catch (IOException e) {
150+
getLogger().log(Level.SEVERE, "Cannot init config", e);
151+
}
152+
107153
}
108154

155+
private void updateService() {
156+
this.updateService = new UpdateService(this);
157+
this.updateService.run();
158+
this.updateService.notifyConsole(getComponentLogger());
159+
}
160+
161+
109162
@SuppressWarnings("UnstableApiUsage")
110163
private void registerCommands() {
111164
Bukkit.getCommandMap().register("gopaint", getPluginMeta().getName(), new GoPaintCommand(this));
@@ -121,13 +174,17 @@ private void registerListeners() {
121174
PluginManager pm = getServer().getPluginManager();
122175
pm.registerEvents(new InventoryListener(getBrushManager()), this);
123176
pm.registerEvents(new InteractListener(this), this);
124-
pm.registerEvents(new ConnectListener(getBrushManager()), this);
177+
pm.registerEvents(new ConnectListener(getBrushManager(), this), this);
125178
}
126179

127180
private boolean hasOriginalGoPaint() {
128181
return getServer().getPluginManager().getPlugin("goPaint") != this;
129182
}
130183

184+
private void donationInformation() {
185+
getComponentLogger().info(Component.translatable("bettergopaint.notify.donation.console"));
186+
}
187+
131188
private @Nullable AnnotationParser<CommandSender> enableCommandSystem() {
132189
try {
133190
LegacyPaperCommandManager<CommandSender> commandManager = LegacyPaperCommandManager.createNative(
@@ -150,4 +207,8 @@ private boolean hasOriginalGoPaint() {
150207
return brushManager;
151208
}
152209

210+
public UpdateService getUpdateService() {
211+
return updateService;
212+
}
213+
153214
}

0 commit comments

Comments
 (0)