Skip to content

Commit

Permalink
Add non-reflection provider for syncCommands
Browse files Browse the repository at this point in the history
On 1.21.4+ Player#updateCommands has the same logic as CraftServer#updateCommands, so we can just use that.
  • Loading branch information
JRoy authored and mdcfe committed Mar 9, 2025
1 parent 5bf158c commit 90d766d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,7 @@
import net.ess3.provider.providers.ModernPlayerLocaleProvider;
import net.ess3.provider.providers.ModernPotionMetaProvider;
import net.ess3.provider.providers.ModernSignDataProvider;
import net.ess3.provider.providers.ModernSyncCommandsProvider;
import net.ess3.provider.providers.PaperBiomeKeyProvider;
import net.ess3.provider.providers.PaperContainerProvider;
import net.ess3.provider.providers.PaperKnownCommandsProvider;
Expand Down Expand Up @@ -393,7 +394,7 @@ public void onEnable() {
providerFactory.registerProvider(BukkitMaterialTagProvider.class, PaperMaterialTagProvider.class);

// Sync Commands Provider
providerFactory.registerProvider(ReflSyncCommandsProvider.class);
providerFactory.registerProvider(ReflSyncCommandsProvider.class, ModernSyncCommandsProvider.class);

// Persistent Data Provider
providerFactory.registerProvider(ReflPersistentDataProvider.class, ModernPersistentDataProvider.class);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package net.ess3.provider.providers;

import net.ess3.provider.SyncCommandsProvider;
import net.essentialsx.providers.ProviderData;
import net.essentialsx.providers.ProviderTest;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;

@ProviderData(description = "1.21.4+ Sync Commands Provider", weight = 1)
public class ModernSyncCommandsProvider implements SyncCommandsProvider {
@Override
public void syncCommands() {
for (final Player player : Bukkit.getOnlinePlayers()) {
player.updateCommands();
}
}

@ProviderTest
public static boolean test() {
try {
// There isn't a real good way to test this, but we can check if the Creaking class exists.
Class.forName("org.bukkit.entity.Creaking");
return true;
} catch (final Throwable ignored) {
return false;
}
}
}

0 comments on commit 90d766d

Please # to comment.