Skip to content
Open
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
2 changes: 1 addition & 1 deletion Commands/CommandAPI-11.1.0/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
<!-- CommandAPI -->
<dependency>
<groupId>dev.jorel</groupId>
<artifactId>commandapi-spigot-core</artifactId>
<artifactId>commandapi-spigot-shade</artifactId>
<version>11.1.0</version>
<scope>provided</scope>
</dependency>
Expand Down
7 changes: 7 additions & 0 deletions Common/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,13 @@
<version>3.36.0.3</version> <!-- version bundled with Spigot, do not change -->
<scope>provided</scope>
</dependency>

<dependency>
<groupId>com.github.Anon8281</groupId>
<artifactId>UniversalScheduler</artifactId>
<version>0.1.6</version>
<scope>compile</scope>
</dependency>
</dependencies>

<build>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.fren_gor.ultimateAdvancementAPI.nms.util.ReflectionUtil;
import com.fren_gor.ultimateAdvancementAPI.util.AdvancementKey;
import com.fren_gor.ultimateAdvancementAPI.util.Versions;
import com.github.Anon8281.universalScheduler.scheduling.schedulers.TaskScheduler;
import com.google.common.base.Preconditions;
import net.byteflux.libby.BukkitLibraryManager;
import org.bukkit.Bukkit;
Expand Down Expand Up @@ -57,6 +58,7 @@ public final class AdvancementMain {

private final static AtomicBoolean LOADED = new AtomicBoolean(false), ENABLED = new AtomicBoolean(false), INVALID_VERSION = new AtomicBoolean(false);

private final TaskScheduler scheduler;
private final Plugin owningPlugin;
private EventManager eventManager;
private DatabaseManager databaseManager;
Expand All @@ -68,13 +70,14 @@ public final class AdvancementMain {
/**
* Creates a new {@code AdvancementMain}.
* <p>The library folder is {@code "plugins/pluginDirectory/.libs"}.
* Use {@link #AdvancementMain(Plugin, String)} to customize.
* Use {@link #AdvancementMain(Plugin, TaskScheduler, String)} to customize.
*
* @param owningPlugin The plugin instantiating the API.
*/
public AdvancementMain(@NotNull Plugin owningPlugin) {
public AdvancementMain(@NotNull Plugin owningPlugin, @NotNull TaskScheduler scheduler) {
// Don't use AdvancementUtils here until having checked that the current mc version is supported
Preconditions.checkNotNull(owningPlugin, "Plugin is null.");
this.scheduler = scheduler;
this.owningPlugin = owningPlugin;
this.libFolder = ".libs";
}
Expand All @@ -83,13 +86,15 @@ public AdvancementMain(@NotNull Plugin owningPlugin) {
* Creates a new {@code AdvancementMain}.
*
* @param owningPlugin The plugin instantiating the API.
* @param scheduler The scheduler from the plugin.
* @param libFolder The name of the folder when additional libraries will be stored into.
* The folder is created into the plugin directory.
*/
public AdvancementMain(@NotNull Plugin owningPlugin, String libFolder) {
public AdvancementMain(@NotNull Plugin owningPlugin, @NotNull TaskScheduler scheduler, String libFolder) {
// Don't use AdvancementUtils here until having checked that the current mc version is supported
Preconditions.checkNotNull(owningPlugin, "Plugin is null.");
Preconditions.checkNotNull(libFolder, "Lib folder is null.");
this.scheduler = scheduler;
this.owningPlugin = owningPlugin;
this.libFolder = libFolder;
}
Expand Down Expand Up @@ -307,7 +312,7 @@ public AdvancementTab createAdvancementTab(@NotNull Plugin plugin, @NotNull Stri
throw new DuplicatedException("An AdvancementTab with '" + namespace + "' namespace already exists.");
}

AdvancementTab tab = new AdvancementTab(plugin, databaseManager, namespace);
AdvancementTab tab = new AdvancementTab(plugin, scheduler, databaseManager, namespace);
tabs.put(namespace, tab);
pluginMap.computeIfAbsent(plugin, p -> new LinkedList<>()).add(tab);
return tab;
Expand Down Expand Up @@ -553,6 +558,16 @@ public Plugin getOwningPlugin() {
return owningPlugin;
}

/**
* Gets the scheduler from the plugin that instantiated the API.
*
* @return The scheduler from plugin that instantiated the API.
*/
@NotNull
public TaskScheduler getScheduler() {
return scheduler;
}

/**
* Gets the {@link EventManager} API global instance.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@
import com.fren_gor.ultimateAdvancementAPI.util.AdvancementKey;
import com.fren_gor.ultimateAdvancementAPI.util.AdvancementUtils;
import com.fren_gor.ultimateAdvancementAPI.util.LazyValue;
import com.github.Anon8281.universalScheduler.scheduling.schedulers.TaskScheduler;
import com.github.Anon8281.universalScheduler.scheduling.tasks.MyScheduledTask;
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
Expand All @@ -32,7 +34,6 @@
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager;
import org.bukkit.scheduler.BukkitTask;
import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
Expand Down Expand Up @@ -70,6 +71,7 @@ public final class AdvancementTab {
private final Map<AdvancementKey, Advancement> advancements = new HashMap<>();
private final Map<Player, Set<MinecraftKeyWrapper>> players = new HashMap<>();
private final AdvsUpdateRunnable updateManager;
private static TaskScheduler scheduler;

private RootAdvancement rootAdvancement;
private boolean initialised = false, disposed = false, automaticallyShown = false, automaticallyGrant = false;
Expand All @@ -78,10 +80,11 @@ public final class AdvancementTab {
@LazyValue
private Collection<BaseAdvancement> advsWithoutRoot;

AdvancementTab(@NotNull Plugin owningPlugin, @NotNull DatabaseManager databaseManager, @NotNull String namespace) {
AdvancementTab(@NotNull Plugin owningPlugin, @NotNull TaskScheduler scheduler, @NotNull DatabaseManager databaseManager, @NotNull String namespace) {
checkNamespace(namespace);
this.namespace = Objects.requireNonNull(namespace);
this.owningPlugin = Objects.requireNonNull(owningPlugin);
this.scheduler = Objects.requireNonNull(scheduler);
this.eventManager = new EventManager(owningPlugin);
this.databaseManager = Objects.requireNonNull(databaseManager);
this.updateManager = new AdvsUpdateRunnable();
Expand Down Expand Up @@ -769,6 +772,16 @@ public Plugin getOwningPlugin() {
return owningPlugin;
}

/**
* Gets the scheduler from the plugin that created this advancement tab.
*
* @return The scheduler from the plugin that created this advancement tab.
*/
@NotNull
public TaskScheduler getScheduler() {
return scheduler;
}

/**
* Gets the {@link EventManager} of this tab.
*
Expand Down Expand Up @@ -821,12 +834,12 @@ private class AdvsUpdateRunnable implements Runnable {

private final Set<TeamProgression> advsToUpdate = new HashSet<>();
private boolean scheduled = false;
private BukkitTask task;
private MyScheduledTask task;

public void schedule(@NotNull TeamProgression progression) {
if (!scheduled) {
scheduled = true;
task = Bukkit.getScheduler().runTaskLater(owningPlugin, this, 1L);
task = scheduler.runTaskLater(this, 1L);
}
advsToUpdate.add(progression);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -867,7 +867,7 @@ public void getStoredPlayerName(@NotNull OfflinePlayer player, @NotNull Consumer
*/
public void getStoredPlayerName(@NotNull UUID uuid, @NotNull Consumer<ObjectResult<@Nullable String>> action) {
Preconditions.checkNotNull(action, "Consumer is null.");
getMain().getDatabaseManager().getStoredPlayerName(uuid).thenAccept(s -> runSync(plugin, () -> action.accept(s)));
getMain().getDatabaseManager().getStoredPlayerName(uuid).thenAccept(s -> runSync(plugin, main.getScheduler(), () -> action.accept(s)));
}

private <T extends Result> void callAfterLoad(@NotNull Player player, @NotNull Function<DatabaseManager, CompletableFuture<T>> internalAction, @Nullable Consumer<T> action) {
Expand All @@ -892,7 +892,7 @@ private <T extends Result> void callAfterLoad(@NotNull UUID uuid, @NotNull Funct
}
c.thenAccept(b -> {
if (action != null) {
runSync(plugin, () -> {
runSync(plugin, main.getScheduler(), () -> {
try {
if (plugin.isEnabled())
action.accept(b);
Expand Down Expand Up @@ -936,7 +936,7 @@ private <T extends Result> void callAfterLoad(@NotNull UUID uuid1, @NotNull UUID
}
c.thenAccept(b -> {
if (action != null) {
runSync(plugin, () -> {
runSync(plugin, main.getScheduler(), () -> {
try {
if (plugin.isEnabled())
action.accept(b);
Expand All @@ -959,7 +959,7 @@ private <T extends Result> void callAfterLoad(@NotNull UUID uuid1, @NotNull UUID

private <T extends Result> void callSyncIfNotNull(@NotNull CompletableFuture<T> completableFuture, @Nullable Consumer<T> action) {
if (action != null) {
completableFuture.thenAccept(t -> runSync(plugin, () -> action.accept(t)));
completableFuture.thenAccept(t -> runSync(plugin, main.getScheduler(), () -> action.accept(t)));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -541,7 +541,7 @@ public boolean isVisible(@NotNull UUID uuid) {
* When overridden, this method (called via {@code super}) enables the AVS features for that method.
*/
public boolean isVisible(@NotNull TeamProgression progression) {
validateTeamProgression(progression);
// validateTeamProgression(progression);
// Advancement visibility system
if (iVisibilityMethod != null) {
try {
Expand Down Expand Up @@ -576,7 +576,7 @@ public void onGrant(@NotNull Player player, boolean giveRewards) {
// Show Toast
if (display.doesShowToast()) {
// TODO Find a better solution
runSync(advancementTab.getOwningPlugin(), 2, () -> AdvancementUtils.displayToastDuringUpdate(player, this));
runSync(advancementTab.getOwningPlugin(), advancementTab.getScheduler(), 2, () -> AdvancementUtils.displayToastDuringUpdate(player, this));
}

if (giveRewards)
Expand Down Expand Up @@ -623,7 +623,7 @@ public void revoke(@NotNull Player player) {
* The values are the current progressions of the team.
*/
public void onUpdate(@NotNull TeamProgression teamProgression, @NotNull Map<AdvancementWrapper, Integer> addedAdvancements) {
if (isVisible(teamProgression)) {
if (teamProgression.isValid() && isVisible(teamProgression)) {
addedAdvancements.put(getNMSWrapper(), getProgression(teamProgression));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,7 @@ private void unloadPlayerOnQuit(@NotNull UUID uuid) {
if (Bukkit.isPrimaryThread()) {
callEventCatchingExceptions(new TeamUnloadEvent(t));
} else {
runSync(main.getOwningPlugin(), () -> callEventCatchingExceptions(new TeamUnloadEvent(t)));
runSync(main.getOwningPlugin(), main.getScheduler(), () -> callEventCatchingExceptions(new TeamUnloadEvent(t)));
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import com.fren_gor.ultimateAdvancementAPI.nms.wrappers.advancement.AdvancementFrameTypeWrapper;
import com.fren_gor.ultimateAdvancementAPI.nms.wrappers.advancement.AdvancementWrapper;
import com.fren_gor.ultimateAdvancementAPI.nms.wrappers.packets.PacketPlayOutAdvancementsWrapper;
import com.github.Anon8281.universalScheduler.scheduling.schedulers.TaskScheduler;
import com.google.common.base.Preconditions;
import net.md_5.bungee.api.chat.BaseComponent;
import net.md_5.bungee.api.chat.ComponentBuilder;
Expand Down Expand Up @@ -247,21 +248,21 @@ public static void checkSync() {
}

public static void runSync(@NotNull AdvancementMain main, @NotNull Runnable runnable) {
runSync(main.getOwningPlugin(), runnable);
runSync(main.getOwningPlugin(), main.getScheduler(), runnable);
}

public static void runSync(@NotNull Plugin plugin, @NotNull Runnable runnable) {
runSync(plugin, 1, runnable);
public static void runSync(@NotNull Plugin plugin, @NotNull TaskScheduler scheduler, @NotNull Runnable runnable) {
runSync(plugin, scheduler, 1, runnable);
}

public static void runSync(@NotNull AdvancementMain main, long delay, @NotNull Runnable runnable) {
runSync(main.getOwningPlugin(), delay, runnable);
runSync(main.getOwningPlugin(), main.getScheduler(), delay, runnable);
}

public static void runSync(@NotNull Plugin plugin, long delay, @NotNull Runnable runnable) {
public static void runSync(@NotNull Plugin plugin, @NotNull TaskScheduler scheduler, long delay, @NotNull Runnable runnable) {
Preconditions.checkNotNull(plugin, "Plugin is null.");
Preconditions.checkNotNull(runnable, "Runnable is null.");
Bukkit.getScheduler().scheduleSyncDelayedTask(plugin, runnable, delay);
scheduler.runTaskLater(runnable, delay);
}

@NotNull
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
import com.fren_gor.ultimateAdvancementAPI.util.AdvancementKey;
import com.fren_gor.ultimateAdvancementAPI.util.CoordAdapter;
import com.fren_gor.ultimateAdvancementAPI.util.CoordAdapter.Coord;
import com.github.Anon8281.universalScheduler.UniversalScheduler;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import org.bukkit.Bukkit;
Expand Down Expand Up @@ -139,7 +140,7 @@ private void testCoordAdapterHelper(@NotNull Collection<Coord> coordinates) {
@Test
public void docCodeTest() {
Plugin myPlugin = InterfaceImplementer.newFakePlugin("myPlugin");
AdvancementMain main = Utils.newAdvancementMain(myPlugin);
AdvancementMain main = Utils.newAdvancementMain(myPlugin, UniversalScheduler.getScheduler(myPlugin));
AdvancementTab myTab = main.createAdvancementTab(myPlugin, "mytab");

// Keys of the advancements to create
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.fren_gor.ultimateAdvancementAPI.AdvancementMain;
import com.fren_gor.ultimateAdvancementAPI.database.DatabaseManager;
import com.fren_gor.ultimateAdvancementAPI.util.Versions;
import com.github.Anon8281.universalScheduler.scheduling.schedulers.TaskScheduler;
import net.byteflux.libby.BukkitLibraryManager;
import org.bukkit.Bukkit;
import org.bukkit.Server;
Expand Down Expand Up @@ -115,8 +116,8 @@ public static MockedStatic<Bukkit> mockServer() {
*
* @param plugin The plugin
*/
public static AdvancementMain newAdvancementMain(@NotNull Plugin plugin) {
return newAdvancementMain(plugin, new EventManager(plugin));
public static AdvancementMain newAdvancementMain(@NotNull Plugin plugin, @NotNull TaskScheduler scheduler) {
return newAdvancementMain(plugin, scheduler, new EventManager(plugin));
}

/**
Expand All @@ -129,11 +130,11 @@ public static AdvancementMain newAdvancementMain(@NotNull Plugin plugin) {
* @param plugin The plugin
* @param manager The event manager
*/
public static AdvancementMain newAdvancementMain(@NotNull Plugin plugin, @NotNull EventManager manager) {
public static AdvancementMain newAdvancementMain(@NotNull Plugin plugin, @NotNull TaskScheduler scheduler, @NotNull EventManager manager) {
assertNotNull("newAdvancementMain(...) must be called inside Utils.mockServer(...)", Bukkit.getServer());
assertNotNull(plugin);
assertNotNull(manager);
AdvancementMain main = new AdvancementMain(plugin);
AdvancementMain main = new AdvancementMain(plugin, scheduler);
try {
((AtomicBoolean) mainLOADED.get(main)).set(true);
((AtomicBoolean) mainENABLED.get(main)).set(true);
Expand Down
11 changes: 11 additions & 0 deletions Plugin/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -102,6 +102,13 @@
</exclusion>
</exclusions>
</dependency>

<dependency>
<groupId>com.github.Anon8281</groupId>
<artifactId>UniversalScheduler</artifactId>
<version>0.1.6</version>
<scope>compile</scope>
</dependency>
</dependencies>

<build>
Expand Down Expand Up @@ -198,6 +205,10 @@
<pattern>org.bstats</pattern>
<shadedPattern>com.fren_gor.ultimateAdvancementAPI.libs.org.bstats</shadedPattern>
</relocation>
<relocation>
<pattern>com.github.Anon8281.universalScheduler</pattern>
<shadedPattern>com.frengor.ultimateadvancementapi-parent.universalScheduler</shadedPattern>
</relocation>
</relocations>
<createSourcesJar>false</createSourcesJar>
<shadeSourcesContent>false</shadeSourcesContent>
Expand Down
Loading