hytale-server/com/hypixel/hytale/builtin/commandmacro/MacroCommandPlugin.java

56 lines
2.3 KiB
Java

package com.hypixel.hytale.builtin.commandmacro;
import com.hypixel.hytale.assetstore.AssetRegistry;
import com.hypixel.hytale.assetstore.event.LoadedAssetsEvent;
import com.hypixel.hytale.assetstore.map.DefaultAssetMap;
import com.hypixel.hytale.server.core.asset.HytaleAssetStore;
import com.hypixel.hytale.server.core.command.system.CommandRegistration;
import com.hypixel.hytale.server.core.plugin.JavaPlugin;
import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
import java.util.Map;
import javax.annotation.Nonnull;
public class MacroCommandPlugin extends JavaPlugin {
private static MacroCommandPlugin instance;
private final Map<String, CommandRegistration> macroCommandRegistrations = new Object2ObjectOpenHashMap();
public static MacroCommandPlugin get() {
return instance;
}
public MacroCommandPlugin(@Nonnull JavaPluginInit init) {
super(init);
}
@Override
protected void setup() {
instance = this;
AssetRegistry.register(
((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)((HytaleAssetStore.Builder)HytaleAssetStore.builder(
MacroCommandBuilder.class, new DefaultAssetMap()
)
.setPath("MacroCommands"))
.setKeyFunction(MacroCommandBuilder::getId))
.setCodec(MacroCommandBuilder.CODEC))
.build()
);
this.getEventRegistry().register(LoadedAssetsEvent.class, MacroCommandBuilder.class, this::loadCommandMacroAsset);
this.getCommandRegistry().registerCommand(new WaitCommand());
this.getCommandRegistry().registerCommand(new EchoCommand());
}
public void loadCommandMacroAsset(@Nonnull LoadedAssetsEvent<String, MacroCommandBuilder, DefaultAssetMap<String, MacroCommandBuilder>> event) {
for (MacroCommandBuilder value : event.getLoadedAssets().values()) {
if (this.macroCommandRegistrations.containsKey(value.getName())) {
this.macroCommandRegistrations.get(value.getName()).unregister();
}
CommandRegistration commandRegistration = MacroCommandBuilder.createAndRegisterCommand(value);
if (commandRegistration != null) {
this.macroCommandRegistrations.put(value.getName(), commandRegistration);
}
}
}
}