Skip to content

Commit

Permalink
Proper delegation to bukkit platform
Browse files Browse the repository at this point in the history
  • Loading branch information
vaperion committed Feb 24, 2024
1 parent 616d14e commit 6060c44
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 73 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
import java.util.Locale;

@RequiredArgsConstructor
public final class BladeBukkitPlatform implements BladePlatform {
public class BladeBukkitPlatform implements BladePlatform {

private static final Method SYNC_COMMANDS;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,72 +1,16 @@
package me.vaperion.blade.paper;

import lombok.RequiredArgsConstructor;
import me.vaperion.blade.Blade;
import me.vaperion.blade.Blade.Builder.Binder;
import me.vaperion.blade.bukkit.argument.OfflinePlayerArgument;
import me.vaperion.blade.bukkit.argument.PlayerArgument;
import me.vaperion.blade.bukkit.container.BukkitContainer;
import me.vaperion.blade.bukkit.BladeBukkitPlatform;
import me.vaperion.blade.bukkit.context.BukkitSender;
import me.vaperion.blade.bukkit.platform.BukkitHelpGenerator;
import me.vaperion.blade.bukkit.platform.ProtocolLibTabCompleter;
import me.vaperion.blade.container.ContainerCreator;
import me.vaperion.blade.paper.brigadier.BladeBrigadierSupport;
import me.vaperion.blade.platform.BladeConfiguration;
import me.vaperion.blade.platform.BladePlatform;
import me.vaperion.blade.platform.TabCompleter;
import org.bukkit.Bukkit;
import org.bukkit.OfflinePlayer;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import org.jetbrains.annotations.NotNull;

import java.lang.reflect.Method;
import java.util.Locale;
public final class BladePaperPlatform extends BladeBukkitPlatform {

@RequiredArgsConstructor
public final class BladePaperPlatform implements BladePlatform {

private static final Method SYNC_COMMANDS;

static {
Method syncCommands = null;

try {
Class<?> craftServerClass = Bukkit.getServer().getClass();
syncCommands = craftServerClass.getDeclaredMethod("syncCommands");
syncCommands.setAccessible(true);
} catch (NoSuchMethodException ignored) {
// Doesn't exist in 1.8
} catch (Exception ex) {
System.err.println("Failed to grab CraftServer#syncCommands method.");
ex.printStackTrace();
}

SYNC_COMMANDS = syncCommands;
}

private final JavaPlugin plugin;

@Override
public @NotNull Object getPluginInstance() {
return plugin;
}

@Override
public @NotNull ContainerCreator<?> getContainerCreator() {
return BukkitContainer.CREATOR;
}

@Override
public void configureBlade(Blade.@NotNull Builder builder, @NotNull BladeConfiguration configuration) {
configuration.setPluginInstance(plugin);
configuration.setFallbackPrefix(plugin.getName().toLowerCase(Locale.ROOT));
configuration.setHelpGenerator(new BukkitHelpGenerator());
configuration.setTabCompleter(Bukkit.getPluginManager().isPluginEnabled("ProtocolLib") ? new ProtocolLibTabCompleter(plugin) : new TabCompleter.Default());

Binder binder = new Binder(builder, true);
binder.bind(Player.class, new PlayerArgument());
binder.bind(OfflinePlayer.class, new OfflinePlayerArgument());
public BladePaperPlatform(JavaPlugin plugin) {
super(plugin);
}

@Override
Expand All @@ -80,16 +24,4 @@ public void ingestBlade(@NotNull Blade blade) {
t.printStackTrace();
}
}

@Override
public void postCommandMapUpdate() {
if (SYNC_COMMANDS != null) {
try {
SYNC_COMMANDS.invoke(Bukkit.getServer());
} catch (Throwable t) {
System.err.println("Blade failed to invoke CraftServer#syncCommands method, Brigadier may not recognize new commands.");
t.printStackTrace();
}
}
}
}

0 comments on commit 6060c44

Please sign in to comment.