-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: centralize command & more use of api instead of common
Start process to centralize command - Not implemented yet Use more of api to remove class in common especially for ServerPlayer
- Loading branch information
1 parent
a2a08d2
commit aeb2404
Showing
66 changed files
with
2,062 additions
and
776 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
76 changes: 39 additions & 37 deletions
76
bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/AurionChat.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,86 +1,88 @@ | ||
package com.mineaurion.aurionchat.bukkit; | ||
|
||
import com.mineaurion.aurionchat.bukkit.command.ChatCommand; | ||
import com.mineaurion.aurionchat.bukkit.listeners.ChatListener; | ||
import com.mineaurion.aurionchat.bukkit.listeners.CommandListener; | ||
import com.mineaurion.aurionchat.bukkit.listeners.LoginListener; | ||
import com.mineaurion.aurionchat.common.AbstractAurionChat; | ||
import com.mineaurion.aurionchat.common.config.ConfigurationAdapter; | ||
import com.mineaurion.aurionchat.common.logger.JavaPluginLogger; | ||
import com.mineaurion.aurionchat.common.logger.PluginLogger; | ||
import com.mineaurion.aurionchat.common.plugin.AbstractAurionChat; | ||
import net.kyori.adventure.platform.bukkit.BukkitAudiences; | ||
import org.bukkit.Bukkit; | ||
import org.bukkit.Server; | ||
import org.bukkit.command.PluginCommand; | ||
import org.bukkit.plugin.PluginManager; | ||
import org.bukkit.plugin.java.JavaPlugin; | ||
|
||
import java.nio.file.Path; | ||
|
||
public class AurionChat extends AbstractAurionChat { | ||
|
||
public final JavaPlugin plugin; | ||
public final Bootstrap bootstrap; | ||
|
||
public BukkitAudiences audiences; | ||
|
||
private PlayerFactory playerFactory; | ||
public SenderFactory senderFactory; | ||
|
||
public AurionChat(JavaPlugin plugin){ | ||
this.plugin = plugin; | ||
} | ||
private CommandExecutor commandManager; | ||
|
||
public void onEnable(){ | ||
getlogger().info("AurionChat Initializing"); | ||
audiences = BukkitAudiences.create(plugin); | ||
this.enable(); | ||
public AurionChat(Bootstrap bootstrap){ | ||
super(new JavaPluginLogger(Bukkit.getLogger())); | ||
this.bootstrap = bootstrap; | ||
} | ||
|
||
public void onDisable() { | ||
this.disable(); | ||
@Override | ||
protected void registerPlatformListeners() { | ||
PluginManager pluginManager = getServer().getPluginManager(); | ||
pluginManager.registerEvents(new LoginListener(this), getBootstrap()); | ||
pluginManager.registerEvents(new CommandListener(this), getBootstrap()); | ||
pluginManager.registerEvents(new ChatListener(this), getBootstrap()); | ||
} | ||
|
||
@Override | ||
protected void registerPlatformListeners() { | ||
PluginManager pluginManager = plugin.getServer().getPluginManager(); | ||
pluginManager.registerEvents(new LoginListener(this), plugin); | ||
pluginManager.registerEvents(new CommandListener(this), plugin); | ||
pluginManager.registerEvents(new ChatListener(this), plugin); | ||
protected void setupSenderFactory() { | ||
this.audiences = BukkitAudiences.create(getBootstrap()); | ||
this.senderFactory = new SenderFactory(this); | ||
} | ||
|
||
@Override | ||
public ConfigurationAdapter getConfigurationAdapter() { | ||
return new BukkitConfigurationAdapter(this, resolveConfig("config.yml").toFile()); | ||
return new BukkitConfigurationAdapter(resolveConfig("config.yml").toFile()); | ||
} | ||
|
||
public SenderFactory getSenderFactory(){ | ||
return this.senderFactory; | ||
} | ||
|
||
@Override | ||
protected Path getConfigDirectory() { | ||
return this.plugin.getDataFolder().toPath().toAbsolutePath(); | ||
public Bootstrap getBootstrap(){ | ||
return this.bootstrap; | ||
} | ||
|
||
public Server getServer(){ | ||
return bootstrap.getServer(); | ||
} | ||
|
||
@Override | ||
protected void registerCommands() { | ||
plugin.getCommand("chat").setExecutor(new ChatCommand(this)); | ||
PluginCommand command = bootstrap.getCommand("chat"); | ||
if(command == null){ | ||
getLogger().severe("Unable to register /chat command with the server"); | ||
return; | ||
} | ||
|
||
this.commandManager = new CommandExecutor(this, command); | ||
this.commandManager.register(); | ||
} | ||
|
||
@Override | ||
protected void disablePlugin() { | ||
plugin.getServer().getPluginManager().disablePlugin(plugin); | ||
getServer().getPluginManager().disablePlugin(getBootstrap()); | ||
} | ||
|
||
@Override | ||
public PluginLogger getlogger() { | ||
public PluginLogger getLogger() { | ||
return new JavaPluginLogger(Bukkit.getLogger()); | ||
} | ||
|
||
public BukkitAudiences getAudiences(){ | ||
return audiences; | ||
} | ||
|
||
@Override | ||
protected void setupPlayerFactory() { | ||
this.playerFactory = new PlayerFactory(this); | ||
} | ||
|
||
@Override | ||
public PlayerFactory getPlayerFactory() { | ||
return playerFactory; | ||
} | ||
} |
30 changes: 30 additions & 0 deletions
30
bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/Bootstrap.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
package com.mineaurion.aurionchat.bukkit; | ||
|
||
import com.mineaurion.aurionchat.common.plugin.AurionChatBootstrap; | ||
import org.bukkit.plugin.java.JavaPlugin; | ||
|
||
import java.nio.file.Path; | ||
|
||
public class Bootstrap extends JavaPlugin implements AurionChatBootstrap { | ||
private final AurionChat plugin; | ||
|
||
|
||
public Bootstrap(){ | ||
this.plugin = new AurionChat(this); | ||
} | ||
|
||
@Override | ||
public void onEnable(){ | ||
plugin.enable(); | ||
} | ||
|
||
@Override | ||
public void onDisable() { | ||
plugin.disable(); | ||
} | ||
|
||
@Override | ||
public Path getConfigDirectory() { | ||
return getDataFolder().toPath().toAbsolutePath(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
86 changes: 86 additions & 0 deletions
86
bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/CommandExecutor.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
package com.mineaurion.aurionchat.bukkit; | ||
|
||
import com.mineaurion.aurionchat.common.command.CommandManager; | ||
import org.bukkit.Server; | ||
import org.bukkit.command.*; | ||
import org.bukkit.event.EventHandler; | ||
import org.bukkit.event.Listener; | ||
import org.bukkit.event.server.ServerCommandEvent; | ||
import org.checkerframework.checker.nullness.qual.NonNull; | ||
import org.jetbrains.annotations.NotNull; | ||
import org.jetbrains.annotations.Nullable; | ||
|
||
import java.util.Arrays; | ||
import java.util.List; | ||
|
||
|
||
public class CommandExecutor extends CommandManager implements TabExecutor, Listener { | ||
|
||
private static final boolean SELECT_ENTITIES_SUPPORTED; | ||
|
||
static { | ||
boolean selectEntitesSupported = false; | ||
try { | ||
Server.class.getMethod("selectEntities", CommandSender.class, String.class); | ||
selectEntitesSupported = true; | ||
} catch (NoSuchMethodException e){ | ||
// ignore | ||
} | ||
SELECT_ENTITIES_SUPPORTED = selectEntitesSupported; | ||
} | ||
|
||
protected final AurionChat plugin; | ||
protected final PluginCommand command; | ||
|
||
public CommandExecutor(AurionChat plugin, PluginCommand command){ | ||
super(plugin); | ||
this.plugin = plugin; | ||
this.command = command; | ||
} | ||
|
||
public void register(){ | ||
this.command.setExecutor(this); | ||
this.plugin.getServer().getPluginManager().registerEvents(this, this.plugin.bootstrap); | ||
} | ||
|
||
@Override | ||
public boolean onCommand(@NonNull CommandSender sender, @NonNull Command command, @NonNull String label, @NonNull String[] args) { | ||
executeCommand( | ||
this.plugin.getSenderFactory().wrap(sender), | ||
label, | ||
Arrays.asList(args) | ||
); | ||
return true; | ||
} | ||
|
||
@Override | ||
public @Nullable List<String> onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String alias, @NotNull String[] args) { | ||
return tabCompleteCommand(plugin.getSenderFactory().wrap(sender), Arrays.asList(args)); | ||
} | ||
|
||
// Support AurionChat command prefixed with a '/' from the console | ||
@EventHandler(ignoreCancelled = true) | ||
public void onConsoleCommand(ServerCommandEvent e){ | ||
if(!(e.getSender() instanceof ConsoleCommandSender)){ | ||
return; | ||
} | ||
|
||
String buffer = e.getCommand(); | ||
if(buffer.isEmpty() || buffer.charAt(0) != '/'){ | ||
return; | ||
} | ||
|
||
buffer = buffer.substring(1); | ||
|
||
String commandLabel; | ||
int firstSpace = buffer.indexOf(' '); | ||
commandLabel = firstSpace == -1 ? buffer : buffer.substring(0, firstSpace); | ||
Command command = this.plugin.getBootstrap().getServer().getCommandMap().getCommand(commandLabel); | ||
if(command != this.command){ | ||
return; | ||
} | ||
|
||
e.setCommand(buffer); | ||
} | ||
|
||
} |
37 changes: 0 additions & 37 deletions
37
bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/PlayerFactory.java
This file was deleted.
Oops, something went wrong.
22 changes: 0 additions & 22 deletions
22
bukkit/src/main/java/com/mineaurion/aurionchat/bukkit/PluginLoader.java
This file was deleted.
Oops, something went wrong.
Oops, something went wrong.