Skip to content
Open
Show file tree
Hide file tree
Changes from 2 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
1 change: 1 addition & 0 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ subprojects {
repositories {
mavenCentral()
maven("https://oss.sonatype.org/content/repositories/snapshots/")
maven("https://libraries.minecraft.net")
}

java {
Expand Down
2 changes: 1 addition & 1 deletion bukkit/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ dependencies {

tasks {
processResources {
filesMatching("plugin.yml") {
filesMatching("*plugin.yml") {
expand(
"name" to project.property("artifactName"),
"version" to project.version,
Expand Down
85 changes: 85 additions & 0 deletions bukkit/src/main/java/org/popcraft/chunky/AbstractChunkyBukkit.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package org.popcraft.chunky;

import org.bstats.bukkit.Metrics;
import org.bstats.charts.SimplePie;
import org.bukkit.Bukkit;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldInitEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.java.JavaPlugin;
import org.popcraft.chunky.api.ChunkyAPI;
import org.popcraft.chunky.command.CommandArguments;
import org.popcraft.chunky.command.CommandLiteral;
import org.popcraft.chunky.integration.WorldBorderIntegration;
import org.popcraft.chunky.platform.BukkitConfig;
import org.popcraft.chunky.platform.BukkitServer;
import org.popcraft.chunky.platform.Folia;
import org.popcraft.chunky.util.TranslationKey;
import org.popcraft.chunky.util.Version;

import static org.popcraft.chunky.util.Translator.translate;

public abstract class AbstractChunkyBukkit extends JavaPlugin implements Listener {

protected static final String COMMAND_PERMISSION_KEY = "chunky.command.";
protected Chunky chunky;

protected abstract void postEnable();

protected void validateServerVersion(Version version) {
if (version.isValid() && Version.MINECRAFT_1_13_2.isHigherThan(version)) {
getLogger().severe(() -> translate(TranslationKey.ERROR_VERSION));
getServer().getPluginManager().disablePlugin(this);
}
}

@Override
public final void onEnable() {
this.chunky = new Chunky(new BukkitServer(this), new BukkitConfig(this));
final Version currentVersion = new Version(Bukkit.getBukkitVersion(), true);
validateServerVersion(currentVersion);

if (!isEnabled()) {
return;
}

getServer().getServicesManager().register(Chunky.class, chunky, this, ServicePriority.Normal);
getServer().getServicesManager().register(ChunkyAPI.class, chunky.getApi(), this, ServicePriority.Normal);
if (chunky.getConfig().getContinueOnRestart()) {
final Runnable continueTask = () -> chunky.getCommands().get(CommandLiteral.CONTINUE).execute(chunky.getServer().getConsole(), CommandArguments.empty());
if (Folia.isFolia()) {
Folia.onServerInit(this, continueTask);
} else {
getServer().getScheduler().scheduleSyncDelayedTask(this, continueTask);
}
}
if (getServer().getPluginManager().getPlugin("WorldBorder") != null) {
chunky.getServer().getIntegrations().put("border", new WorldBorderIntegration());
}
final Metrics metrics = new Metrics(this, 8211);
metrics.addCustomChart(new SimplePie("language", () -> chunky.getConfig().getLanguage()));
getServer().getPluginManager().registerEvents(this, this);

postEnable();
}

@Override
public void onDisable() {
HandlerList.unregisterAll((Plugin) this);
if (chunky != null) {
chunky.disable();
}
}

public Chunky getChunky() {
return chunky;
}

@EventHandler
public void onWorldInit(final WorldInitEvent event) {
chunky.getRegionCache().clear(event.getWorld().getName());
}
}
80 changes: 6 additions & 74 deletions bukkit/src/main/java/org/popcraft/chunky/ChunkyBukkit.java
Original file line number Diff line number Diff line change
@@ -1,90 +1,31 @@
package org.popcraft.chunky;

import org.bstats.bukkit.Metrics;
import org.bstats.charts.SimplePie;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.HandlerList;
import org.bukkit.event.Listener;
import org.bukkit.event.world.WorldInitEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.ServicePriority;
import org.bukkit.plugin.java.JavaPlugin;
import org.popcraft.chunky.api.ChunkyAPI;
import org.popcraft.chunky.command.ChunkyCommand;
import org.popcraft.chunky.command.CommandArguments;
import org.popcraft.chunky.command.CommandLiteral;
import org.popcraft.chunky.integration.WorldBorderIntegration;
import org.popcraft.chunky.platform.BukkitConfig;
import org.popcraft.chunky.platform.BukkitPlayer;
import org.popcraft.chunky.platform.BukkitSender;
import org.popcraft.chunky.platform.BukkitServer;
import org.popcraft.chunky.platform.Folia;
import org.popcraft.chunky.platform.Paper;
import org.popcraft.chunky.platform.Sender;
import org.popcraft.chunky.util.Input;
import org.popcraft.chunky.util.TranslationKey;
import org.popcraft.chunky.util.Version;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.Properties;
import java.util.*;

import static org.popcraft.chunky.util.Translator.translate;

public final class ChunkyBukkit extends JavaPlugin implements Listener {
private static final String COMMAND_PERMISSION_KEY = "chunky.command.";
private Chunky chunky;
public final class ChunkyBukkit extends AbstractChunkyBukkit {

@Override
public void onEnable() {
this.chunky = new Chunky(new BukkitServer(this), new BukkitConfig(this));
final Version currentVersion = new Version(Bukkit.getBukkitVersion(), true);
if (currentVersion.isValid() && Version.MINECRAFT_1_13_2.isHigherThan(currentVersion)) {
getLogger().severe(() -> translate(TranslationKey.ERROR_VERSION));
getServer().getPluginManager().disablePlugin(this);
}
if (!isEnabled()) {
return;
}
getServer().getServicesManager().register(Chunky.class, chunky, this, ServicePriority.Normal);
getServer().getServicesManager().register(ChunkyAPI.class, chunky.getApi(), this, ServicePriority.Normal);
if (chunky.getConfig().getContinueOnRestart()) {
final Runnable continueTask = () -> chunky.getCommands().get(CommandLiteral.CONTINUE).execute(chunky.getServer().getConsole(), CommandArguments.empty());
if (Folia.isFolia()) {
Folia.onServerInit(this, continueTask);
} else {
getServer().getScheduler().scheduleSyncDelayedTask(this, continueTask);
}
}
if (getServer().getPluginManager().getPlugin("WorldBorder") != null) {
chunky.getServer().getIntegrations().put("border", new WorldBorderIntegration());
}
final Metrics metrics = new Metrics(this, 8211);
metrics.addCustomChart(new SimplePie("language", () -> chunky.getConfig().getLanguage()));
getServer().getPluginManager().registerEvents(this, this);
if (!Paper.isPaper()) {
disablePauseWhenEmptySeconds();
}
}

@Override
public void onDisable() {
HandlerList.unregisterAll((Plugin) this);
if (chunky != null) {
chunky.disable();
}
protected void postEnable() {
disablePauseWhenEmptySeconds();
}

@SuppressWarnings("NullableProblems")
Expand Down Expand Up @@ -120,17 +61,8 @@ public List<String> onTabComplete(final CommandSender sender, final Command comm
suggestions.addAll(commands.get(args[0].toLowerCase()).suggestions(arguments));
}
return suggestions.stream()
.filter(s -> s.toLowerCase().contains(args[args.length - 1].toLowerCase()))
.toList();
}

public Chunky getChunky() {
return chunky;
}

@EventHandler
public void onWorldInit(final WorldInitEvent event) {
chunky.getRegionCache().clear(event.getWorld().getName());
.filter(s -> s.toLowerCase().contains(args[args.length - 1].toLowerCase()))
.toList();
}

private void disablePauseWhenEmptySeconds() {
Expand Down
23 changes: 23 additions & 0 deletions bukkit/src/main/java/org/popcraft/chunky/ChunkyPaper.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package org.popcraft.chunky;

import org.popcraft.chunky.platform.BukkitSender;
import org.popcraft.chunky.platform.Paper;
import org.popcraft.chunky.util.Version;

public final class ChunkyPaper extends AbstractChunkyBukkit {

@Override
protected void validateServerVersion(Version version) {
super.validateServerVersion(version);
if (!version.isHigherThanOrEqualTo(Version.MINECRAFT_1_21_1)) {
getLogger().severe("This version of the Chunky plugin only support Paper versions 1.21.1 and above!");
getLogger().severe("Please update your server or use an older version of the plugin instead.");
setEnabled(false);
}
}

@Override
protected void postEnable() {
Paper.registerCommand(this, chunky, BukkitSender::new, BukkitSender::new, COMMAND_PERMISSION_KEY);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package org.popcraft.chunky.platform;

import org.bukkit.configuration.file.FileConfigurationOptions;
import org.popcraft.chunky.ChunkyBukkit;
import org.popcraft.chunky.AbstractChunkyBukkit;
import org.popcraft.chunky.util.Input;
import org.popcraft.chunky.util.Translator;

Expand All @@ -12,9 +12,9 @@

public class BukkitConfig implements Config {
private static final List<String> HEADER = Arrays.asList("Chunky Configuration", "https://github.com/pop4959/Chunky/wiki/Configuration");
private final ChunkyBukkit plugin;
private final AbstractChunkyBukkit plugin;

public BukkitConfig(final ChunkyBukkit plugin) {
public BukkitConfig(final AbstractChunkyBukkit plugin) {
this.plugin = plugin;
final FileConfigurationOptions options = plugin.getConfig().options();
options.copyDefaults(true);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
import org.bukkit.Bukkit;
import org.bukkit.entity.Entity;
import org.bukkit.plugin.java.JavaPlugin;
import org.popcraft.chunky.ChunkyBukkit;
import org.popcraft.chunky.AbstractChunkyBukkit;
import org.popcraft.chunky.platform.util.Location;

import java.util.List;
Expand All @@ -16,7 +16,7 @@

public class BukkitPlayer extends BukkitSender implements Player {
private static final boolean ACTION_BAR_SUPPORTED;
private final JavaPlugin plugin = JavaPlugin.getPlugin(ChunkyBukkit.class);
private final JavaPlugin plugin = JavaPlugin.getPlugin(AbstractChunkyBukkit.class);

static {
boolean barSupported;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package org.popcraft.chunky.platform;

import org.popcraft.chunky.ChunkyBukkit;
import org.popcraft.chunky.AbstractChunkyBukkit;
import org.popcraft.chunky.integration.Integration;

import java.util.ArrayList;
Expand All @@ -11,10 +11,10 @@
import java.util.Optional;

public class BukkitServer implements Server {
private final ChunkyBukkit plugin;
private final AbstractChunkyBukkit plugin;
private final Map<String, Integration> integrations;

public BukkitServer(final ChunkyBukkit plugin) {
public BukkitServer(final AbstractChunkyBukkit plugin) {
this.plugin = plugin;
this.integrations = new HashMap<>();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.plugin.java.JavaPlugin;
import org.popcraft.chunky.ChunkyBukkit;
import org.popcraft.chunky.AbstractChunkyBukkit;
import org.popcraft.chunky.platform.util.Location;
import org.popcraft.chunky.util.Input;

Expand All @@ -23,7 +23,7 @@ public class BukkitWorld implements World {
private static final boolean IS_GENERATED_SUPPORTED;
private static final int TICKING_LOAD_DURATION = Input.tryInteger(System.getProperty("chunky.tickingLoadDuration")).orElse(0);
private static final boolean AWAIT_TICKET_REMOVAL = Boolean.getBoolean("chunky.awaitTicketRemoval");
private final JavaPlugin plugin = JavaPlugin.getPlugin(ChunkyBukkit.class);
private final JavaPlugin plugin = JavaPlugin.getPlugin(AbstractChunkyBukkit.class);
private final org.bukkit.World world;
private final Border worldBorder;

Expand Down
Loading