Update BookBuilder
This commit is contained in:
@@ -1,28 +1,35 @@
|
||||
package io.izzel.taboolib.common.listener;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import io.izzel.taboolib.TabooLib;
|
||||
import io.izzel.taboolib.TabooLibAPI;
|
||||
import io.izzel.taboolib.common.loader.Startup;
|
||||
import io.izzel.taboolib.common.loader.StartupLoader;
|
||||
import io.izzel.taboolib.module.command.lite.CommandBuilder;
|
||||
import io.izzel.taboolib.module.db.local.Local;
|
||||
import io.izzel.taboolib.module.db.local.LocalPlayer;
|
||||
import io.izzel.taboolib.module.hologram.Hologram;
|
||||
import io.izzel.taboolib.module.hologram.THologram;
|
||||
import io.izzel.taboolib.module.inject.TListener;
|
||||
import io.izzel.taboolib.module.locale.TLocale;
|
||||
import io.izzel.taboolib.module.locale.logger.TLogger;
|
||||
import io.izzel.taboolib.module.tellraw.TellrawJson;
|
||||
import io.izzel.taboolib.util.Files;
|
||||
import io.izzel.taboolib.util.book.BookFormatter;
|
||||
import io.izzel.taboolib.util.item.Items;
|
||||
import io.izzel.taboolib.util.lite.Signs;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.server.ServerCommandEvent;
|
||||
import org.bukkit.inventory.meta.BookMeta;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
@@ -30,50 +37,121 @@ import java.util.Arrays;
|
||||
@TListener
|
||||
public class ListenerCommand implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void cmd(PlayerCommandPreprocessEvent e) {
|
||||
if (e.getMessage().equalsIgnoreCase("/tabooLib")) {
|
||||
e.setCancelled(true);
|
||||
TLocale.Display.sendTitle(e.getPlayer(), "§fTabooLib", "§7TabooLib Enabled.");
|
||||
}
|
||||
if (e.getMessage().equalsIgnoreCase("/tellrawTest") && e.getPlayer().hasPermission("*")) {
|
||||
e.setCancelled(true);
|
||||
TellrawJson.create()
|
||||
.append("§8[§3§lTabooLib§8] §7TellrawJson Test: §f[")
|
||||
.append(Items.getName(e.getPlayer().getItemInHand())).hoverItem(e.getPlayer().getItemInHand())
|
||||
.append("§f]")
|
||||
.send(e.getPlayer());
|
||||
}
|
||||
if (e.getMessage().equalsIgnoreCase("/fakesignTest") && e.getPlayer().hasPermission("*")) {
|
||||
e.setCancelled(true);
|
||||
Signs.fakeSign(e.getPlayer(), lines -> {
|
||||
e.getPlayer().sendMessage("§8[§3§lTabooLib§8] §7FakeSign Lines: §f" + Arrays.toString(lines));
|
||||
static {
|
||||
StartupLoader.register(ListenerCommand.class);
|
||||
}
|
||||
|
||||
abstract class Module {
|
||||
|
||||
abstract public String[] name();
|
||||
|
||||
abstract public void run(Player player);
|
||||
}
|
||||
|
||||
List<Module> testUtil = Lists.newArrayList(
|
||||
new Module() {
|
||||
@Override
|
||||
public String[] name() {
|
||||
return new String[] {"json", "tellrawJson"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(Player player) {
|
||||
TellrawJson.create()
|
||||
.append("§8[§fTabooLib§8] §7TellrawJson: §f[")
|
||||
.append(Items.getName(player.getItemInHand())).hoverItem(player.getItemInHand())
|
||||
.append("§f]")
|
||||
.send(player);
|
||||
}
|
||||
},
|
||||
new Module() {
|
||||
@Override
|
||||
public String[] name() {
|
||||
return new String[] {"sign", "fakeSign"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(Player player) {
|
||||
Signs.fakeSign(player, lines -> player.sendMessage("§8[§fTabooLib§8] §7FakeSign: §f" + Arrays.toString(lines)));
|
||||
}
|
||||
},
|
||||
new Module() {
|
||||
@Override
|
||||
public String[] name() {
|
||||
return new String[] {"hd", "hologram"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(Player player) {
|
||||
player.sendMessage("§8[§fTabooLib§8] §7Hologram.");
|
||||
Location location = player.getEyeLocation().add(player.getLocation().getDirection());
|
||||
Hologram hologram = THologram.create(location, "TabooLib", player)
|
||||
.flash(Lists.newArrayList(
|
||||
"§bT§fabooLib",
|
||||
"§bTa§fbooLib",
|
||||
"§bTab§fooLib",
|
||||
"§bTabo§foLib",
|
||||
"§bTaboo§fLib",
|
||||
"§bTabooL§fib",
|
||||
"§bTabooLi§fb",
|
||||
"§bTabooLib",
|
||||
"§bTabooLi§fb",
|
||||
"§bTabooL§fib",
|
||||
"§bTaboo§fLib",
|
||||
"§bTabo§foLib",
|
||||
"§bTab§fooLib",
|
||||
"§bTa§fbooLib",
|
||||
"§bT§fabooLib",
|
||||
"§fTabooLib"
|
||||
), 1).deleteOn(30);
|
||||
}
|
||||
},
|
||||
new Module() {
|
||||
@Override
|
||||
public String[] name() {
|
||||
return new String[] {"book", "bookBuilder"};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run(Player player) {
|
||||
BookFormatter.writtenBook()
|
||||
.generation(BookMeta.Generation.COPY_OF_COPY)
|
||||
.addPage(TellrawJson.create()
|
||||
.append("BookBuilder")
|
||||
.hoverText("HoverText"))
|
||||
.open(player);
|
||||
}
|
||||
});
|
||||
}
|
||||
if (e.getMessage().equalsIgnoreCase("/hologramTest") && e.getPlayer().hasPermission("*")) {
|
||||
e.setCancelled(true);
|
||||
e.getPlayer().sendMessage("§8[§3§lTabooLib§8] §7Hologram Test.");
|
||||
Location location = e.getPlayer().getEyeLocation().add(e.getPlayer().getLocation().getDirection());
|
||||
Hologram hologram = THologram.create(location, "TabooLib", e.getPlayer())
|
||||
.flash(Lists.newArrayList(
|
||||
"§bT§fabooLib",
|
||||
"§bTa§fbooLib",
|
||||
"§bTab§fooLib",
|
||||
"§bTabo§foLib",
|
||||
"§bTaboo§fLib",
|
||||
"§bTabooL§fib",
|
||||
"§bTabooLi§fb",
|
||||
"§bTabooLib",
|
||||
"§bTabooLi§fb",
|
||||
"§bTabooL§fib",
|
||||
"§bTaboo§fLib",
|
||||
"§bTabo§foLib",
|
||||
"§bTab§fooLib",
|
||||
"§bTa§fbooLib",
|
||||
"§bT§fabooLib",
|
||||
"§fTabooLib"
|
||||
), 1).deleteOn(30);
|
||||
}
|
||||
|
||||
@Startup.Starting
|
||||
public void init() {
|
||||
// 版本命令
|
||||
CommandBuilder.create("taboolib", TabooLib.getPlugin())
|
||||
.aliases("lib")
|
||||
.execute((sender, args) -> {
|
||||
sender.sendMessage("§8[§fTabooLib§8] §7Currently Version: §fv" + TabooLib.getVersion());
|
||||
}).build();
|
||||
// 调试命令
|
||||
CommandBuilder.create("taboolibtest", TabooLib.getPlugin())
|
||||
.permission("*")
|
||||
.aliases("libtest")
|
||||
.tab((sender, args) -> testUtil.stream().flatMap(module -> Arrays.stream(module.name())).filter(name -> name.toLowerCase().startsWith(args[0])).collect(Collectors.toList()))
|
||||
.execute((sender, args) -> {
|
||||
if (sender instanceof Player) {
|
||||
if (args.length == 0) {
|
||||
sender.sendMessage("§8[§fTabooLib§8] §7/libtest §8[...]");
|
||||
return;
|
||||
}
|
||||
for (Module module : testUtil) {
|
||||
for (String name : module.name()) {
|
||||
if (name.equalsIgnoreCase(args[0])) {
|
||||
module.run((Player) sender);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}).build();
|
||||
}
|
||||
|
||||
@EventHandler(priority = EventPriority.LOWEST)
|
||||
|
||||
21
src/main/scala/io/izzel/taboolib/common/loader/Startup.java
Normal file
21
src/main/scala/io/izzel/taboolib/common/loader/Startup.java
Normal file
@@ -0,0 +1,21 @@
|
||||
package io.izzel.taboolib.common.loader;
|
||||
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
public @interface Startup {
|
||||
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@interface Loading {
|
||||
|
||||
}
|
||||
|
||||
@Target(ElementType.METHOD)
|
||||
@Retention(RetentionPolicy.RUNTIME)
|
||||
@interface Starting {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package io.izzel.taboolib.common.loader;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import io.izzel.taboolib.TabooLib;
|
||||
import io.izzel.taboolib.module.inject.TInjectHelper;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Author sky
|
||||
* @Since 2020-03-24 23:54
|
||||
*/
|
||||
public class StartupLoader {
|
||||
|
||||
static List<Class<?>> classList = Lists.newArrayList();
|
||||
|
||||
public static void register(Class<?> clazz) {
|
||||
classList.add(clazz);
|
||||
}
|
||||
|
||||
public static void onLoading() {
|
||||
run(Startup.Loading.class);
|
||||
}
|
||||
|
||||
public static void onStarting() {
|
||||
run(Startup.Starting.class);
|
||||
}
|
||||
|
||||
static void run(Class<? extends Annotation> annotation) {
|
||||
for (Class pluginClass : classList) {
|
||||
for (Method declaredMethod : pluginClass.getDeclaredMethods()) {
|
||||
if (declaredMethod.isAnnotationPresent(annotation)) {
|
||||
declaredMethod.setAccessible(true);
|
||||
for (Object instance : TInjectHelper.getInstance(declaredMethod, pluginClass, TabooLib.getPlugin())) {
|
||||
try {
|
||||
declaredMethod.invoke(instance);
|
||||
} catch (Throwable t) {
|
||||
t.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user