TabooLib v4.21
+ 修复 TellrawJson 的逻辑问题,导致 showItem 无法正常显示。 + 删除了 SQLExample
This commit is contained in:
parent
e34fe8cd29
commit
f8ace276ea
2
pom.xml
2
pom.xml
@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>me.skymc</groupId>
|
<groupId>me.skymc</groupId>
|
||||||
<artifactId>TabooLib</artifactId>
|
<artifactId>TabooLib</artifactId>
|
||||||
<version>4.2</version>
|
<version>4.21</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
|
@ -4,33 +4,29 @@ import com.ilummc.tlib.bungee.api.chat.*;
|
|||||||
import com.ilummc.tlib.bungee.chat.ComponentSerializer;
|
import com.ilummc.tlib.bungee.chat.ComponentSerializer;
|
||||||
import com.ilummc.tlib.logger.TLogger;
|
import com.ilummc.tlib.logger.TLogger;
|
||||||
import com.ilummc.tlib.resources.TLocale;
|
import com.ilummc.tlib.resources.TLocale;
|
||||||
import me.skymc.taboolib.inventory.ItemUtils;
|
|
||||||
import me.skymc.taboolib.methods.ReflectionUtils;
|
import me.skymc.taboolib.methods.ReflectionUtils;
|
||||||
import me.skymc.taboolib.nms.NMSUtils;
|
import me.skymc.taboolib.nms.NMSUtils;
|
||||||
import me.skymc.taboolib.other.NumberUtils;
|
|
||||||
import me.skymc.taboolib.string.ArrayUtils;
|
import me.skymc.taboolib.string.ArrayUtils;
|
||||||
import me.skymc.taboolib.string.VariableFormatter;
|
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import java.lang.reflect.Array;
|
|
||||||
import java.lang.reflect.Method;
|
import java.lang.reflect.Method;
|
||||||
import java.util.Arrays;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @Author sky
|
* @Author sky
|
||||||
* @Since 2018-05-26 14:42json
|
* @Since 2018-05-26 14:42json
|
||||||
|
* @BuilderLevel 1.2
|
||||||
*/
|
*/
|
||||||
public class TellrawJson {
|
public class TellrawJson {
|
||||||
|
|
||||||
private BaseComponent[] components = TextComponent.fromLegacyText("");
|
private List<BaseComponent> components = new ArrayList<>();
|
||||||
private final Class<?> craftItemStackClazz = NMSUtils.getOBCClass("inventory.CraftItemStack");
|
private List<BaseComponent> componentsLatest = new ArrayList<>();
|
||||||
private final Class<?> nmsItemStackClazz = NMSUtils.getNMSClass("ItemStack");
|
private static final Class<?> craftItemStackClazz = NMSUtils.getOBCClass("inventory.CraftItemStack");
|
||||||
private final Class<?> nbtTagCompoundClazz = NMSUtils.getNMSClass("NBTTagCompound");
|
private static final Class<?> nmsItemStackClazz = NMSUtils.getNMSClass("ItemStack");
|
||||||
private final String INVALID_ITEM = "{id:stone,tag:{display:{Name:§c* Invalid ItemStack *}}}";
|
private static final Class<?> nbtTagCompoundClazz = NMSUtils.getNMSClass("NBTTagCompound");
|
||||||
|
private static final String INVALID_ITEM = "{id:stone,tag:{display:{Name:§c* Invalid ItemStack *}}}";
|
||||||
|
|
||||||
TellrawJson() {
|
TellrawJson() {
|
||||||
}
|
}
|
||||||
@ -39,12 +35,16 @@ public class TellrawJson {
|
|||||||
return new TellrawJson();
|
return new TellrawJson();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void send(CommandSender sender) {
|
||||||
|
TLocale.Tellraw.send(sender, toRawMessage());
|
||||||
|
}
|
||||||
|
|
||||||
public String toRawMessage() {
|
public String toRawMessage() {
|
||||||
return ComponentSerializer.toString(components);
|
return ComponentSerializer.toString(getComponentsAll());
|
||||||
}
|
}
|
||||||
|
|
||||||
public String toLegacyText() {
|
public String toLegacyText() {
|
||||||
return TextComponent.toLegacyText(components);
|
return TextComponent.toLegacyText(getComponentsAll());
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson newLine() {
|
public TellrawJson newLine() {
|
||||||
@ -52,52 +52,47 @@ public class TellrawJson {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson append(String text) {
|
public TellrawJson append(String text) {
|
||||||
Arrays.stream(TextComponent.fromLegacyText(text)).forEach(component -> this.components = ArrayUtils.arrayAppend(this.components, component));
|
appendComponents();
|
||||||
|
componentsLatest.addAll(ArrayUtils.asList(TextComponent.fromLegacyText(text)));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson append(TellrawJson json) {
|
public TellrawJson append(TellrawJson json) {
|
||||||
BaseComponent[] newArray = new BaseComponent[components.length + json.components.length];
|
appendComponents();
|
||||||
System.arraycopy(components, 0, newArray, 0, components.length);
|
componentsLatest.addAll(ArrayUtils.asList(json.getComponentsAll()));
|
||||||
System.arraycopy(json.components, 0, newArray, components.length, json.components.length);
|
|
||||||
components = newArray;
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson hoverText(String text) {
|
public TellrawJson hoverText(String text) {
|
||||||
getLatestComponent().setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(text).create()));
|
getLatestComponent().forEach(component -> component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new ComponentBuilder(text).create())));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson hoverItem(ItemStack itemStack) {
|
public TellrawJson hoverItem(ItemStack itemStack) {
|
||||||
getLatestComponent().setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(getItemComponent(itemStack)).create()));
|
getLatestComponent().forEach(component -> component.setHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_ITEM, new ComponentBuilder(getItemComponent(itemStack)).create())));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson clickCommand(String command) {
|
public TellrawJson clickCommand(String command) {
|
||||||
getLatestComponent().setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command));
|
getLatestComponent().forEach(component -> component.setClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, command)));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson clickSuggest(String command) {
|
public TellrawJson clickSuggest(String command) {
|
||||||
getLatestComponent().setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command));
|
getLatestComponent().forEach(component -> component.setClickEvent(new ClickEvent(ClickEvent.Action.SUGGEST_COMMAND, command)));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson clickOpenURL(String url) {
|
public TellrawJson clickOpenURL(String url) {
|
||||||
getLatestComponent().setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url));
|
getLatestComponent().forEach(component -> component.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, url)));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public TellrawJson clickChangePage(int page) {
|
public TellrawJson clickChangePage(int page) {
|
||||||
getLatestComponent().setClickEvent(new ClickEvent(ClickEvent.Action.CHANGE_PAGE, String.valueOf(page)));
|
getLatestComponent().forEach(component -> component.setClickEvent(new ClickEvent(ClickEvent.Action.CHANGE_PAGE, String.valueOf(page))));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void send(CommandSender sender) {
|
|
||||||
TLocale.Tellraw.send(sender, toRawMessage());
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getItemComponent(ItemStack itemStack) {
|
public String getItemComponent(ItemStack itemStack) {
|
||||||
try {
|
try {
|
||||||
Method asNMSCopyMethod = ReflectionUtils.getMethod(craftItemStackClazz, "asNMSCopy", ItemStack.class);
|
Method asNMSCopyMethod = ReflectionUtils.getMethod(craftItemStackClazz, "asNMSCopy", ItemStack.class);
|
||||||
@ -106,7 +101,7 @@ public class TellrawJson {
|
|||||||
Object nmsItemStackObj = asNMSCopyMethod.invoke(null, itemStack);
|
Object nmsItemStackObj = asNMSCopyMethod.invoke(null, itemStack);
|
||||||
return saveNmsItemStackMethod.invoke(nmsItemStackObj, nmsNbtTagCompoundObj).toString();
|
return saveNmsItemStackMethod.invoke(nmsItemStackObj, nmsNbtTagCompoundObj).toString();
|
||||||
} catch (Throwable t) {
|
} catch (Throwable t) {
|
||||||
TLogger.getGlobalLogger().error("failed to serialize itemstack to nms item: " + t.toString());
|
TLogger.getGlobalLogger().error("failed to serialize bukkit item to nms item: " + t.toString());
|
||||||
return INVALID_ITEM;
|
return INVALID_ITEM;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,12 +112,17 @@ public class TellrawJson {
|
|||||||
//
|
//
|
||||||
// *********************************
|
// *********************************
|
||||||
|
|
||||||
private BaseComponent getLatestComponent() {
|
private List<BaseComponent> getLatestComponent() {
|
||||||
return components[components.length - 1];
|
return componentsLatest;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setLatestComponent(BaseComponent component) {
|
private void setLatestComponent(BaseComponent... component) {
|
||||||
components[components.length - 1] = component;
|
componentsLatest.addAll(ArrayUtils.asList(component));
|
||||||
|
}
|
||||||
|
|
||||||
|
private void appendComponents() {
|
||||||
|
components.addAll(componentsLatest);
|
||||||
|
componentsLatest.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
// *********************************
|
// *********************************
|
||||||
@ -131,12 +131,17 @@ public class TellrawJson {
|
|||||||
//
|
//
|
||||||
// *********************************
|
// *********************************
|
||||||
|
|
||||||
public BaseComponent[] getComponents() {
|
|
||||||
return components;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setComponents(BaseComponent[] components) {
|
public void setComponents(BaseComponent[] components) {
|
||||||
this.components = components;
|
this.components = ArrayUtils.asList(components);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public BaseComponent[] getComponents() {
|
||||||
|
return components.toArray(new BaseComponent[0]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public BaseComponent[] getComponentsAll() {
|
||||||
|
List<BaseComponent> components = new ArrayList<>(this.components);
|
||||||
|
components.addAll(componentsLatest);
|
||||||
|
return components.toArray(new BaseComponent[0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,9 @@ package me.skymc.taboolib.listener;
|
|||||||
import me.skymc.taboolib.Main;
|
import me.skymc.taboolib.Main;
|
||||||
import me.skymc.taboolib.TabooLib;
|
import me.skymc.taboolib.TabooLib;
|
||||||
import me.skymc.taboolib.database.PlayerDataManager;
|
import me.skymc.taboolib.database.PlayerDataManager;
|
||||||
|
import me.skymc.taboolib.inventory.ItemUtils;
|
||||||
import me.skymc.taboolib.itemnbtapi.NBTItem;
|
import me.skymc.taboolib.itemnbtapi.NBTItem;
|
||||||
|
import me.skymc.taboolib.json.tellraw.TellrawJson;
|
||||||
import me.skymc.taboolib.message.MsgUtils;
|
import me.skymc.taboolib.message.MsgUtils;
|
||||||
import me.skymc.taboolib.permission.PermissionUtils;
|
import me.skymc.taboolib.permission.PermissionUtils;
|
||||||
import me.skymc.taboolib.playerdata.DataUtils;
|
import me.skymc.taboolib.playerdata.DataUtils;
|
||||||
@ -30,14 +32,19 @@ public class ListenerPlayerCommand implements Listener {
|
|||||||
@SuppressWarnings("deprecation")
|
@SuppressWarnings("deprecation")
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void cmd(PlayerCommandPreprocessEvent e) {
|
public void cmd(PlayerCommandPreprocessEvent e) {
|
||||||
if ("/unbreakable".equals(e.getMessage()) && PermissionUtils.hasPermission(e.getPlayer(), "taboolib.unbreakable")) {
|
if (e.getMessage().equals("/unbreakable") && PermissionUtils.hasPermission(e.getPlayer(), "taboolib.unbreakable")) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
NBTItem nbt = new NBTItem(e.getPlayer().getItemInHand());
|
||||||
NBTItem nbti = new NBTItem(e.getPlayer().getItemInHand());
|
nbt.setInteger("Unbreakable", 1);
|
||||||
nbti.setInteger("Unbreakable", 1);
|
e.getPlayer().setItemInHand(nbt.getItem());
|
||||||
e.getPlayer().setItemInHand(nbti.getItem());
|
|
||||||
|
|
||||||
MsgUtils.send(e.getPlayer(), "Success!");
|
MsgUtils.send(e.getPlayer(), "Success!");
|
||||||
|
} else if (e.getMessage().equals("/tellrawTest") && PermissionUtils.hasPermission(e.getPlayer(), "taboolib.tellraw")) {
|
||||||
|
e.setCancelled(true);
|
||||||
|
TellrawJson.create()
|
||||||
|
.append("§8[§3§lTabooLib§8] §7TellrawJson Test: §f[")
|
||||||
|
.append(ItemUtils.getCustomName(e.getPlayer().getItemInHand())).hoverItem(e.getPlayer().getItemInHand())
|
||||||
|
.append("§f]")
|
||||||
|
.send(e.getPlayer());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,31 +0,0 @@
|
|||||||
package me.skymc.taboolib.mysql.builder;
|
|
||||||
|
|
||||||
import com.zaxxer.hikari.HikariDataSource;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @Author sky
|
|
||||||
* @Since 2018-07-02 23:43
|
|
||||||
*/
|
|
||||||
public class SQLExample extends JavaPlugin {
|
|
||||||
|
|
||||||
private SQLHost sqlHost;
|
|
||||||
private SQLTable sqlTable;
|
|
||||||
private HikariDataSource dataSource;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onEnable() {
|
|
||||||
int value = sqlTable.executeQuery("select * from table where username = ?")
|
|
||||||
.dataSource(dataSource)
|
|
||||||
.statement(statement -> statement.setString(1, "BlackSKY"))
|
|
||||||
.resultNext(result -> result.getInt("value"))
|
|
||||||
.run(0, 0);
|
|
||||||
|
|
||||||
sqlTable.executeUpdate("statement table set value = ? where username = ?")
|
|
||||||
.dataSource(dataSource)
|
|
||||||
.statement(statement -> {
|
|
||||||
statement.setInt(1, 999);
|
|
||||||
statement.setString(2, "BlackSKY");
|
|
||||||
}).run();
|
|
||||||
}
|
|
||||||
}
|
|
@ -4,7 +4,6 @@ import com.ilummc.tlib.util.Strings;
|
|||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.plugin.Plugin;
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import java.text.MessageFormat;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -5,8 +5,6 @@ import me.skymc.taboolib.mysql.builder.query.RunnableQuery;
|
|||||||
import me.skymc.taboolib.mysql.builder.query.RunnableUpdate;
|
import me.skymc.taboolib.mysql.builder.query.RunnableUpdate;
|
||||||
import me.skymc.taboolib.string.ArrayUtils;
|
import me.skymc.taboolib.string.ArrayUtils;
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
|
||||||
import java.sql.Connection;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -6,10 +6,8 @@ import com.zaxxer.hikari.HikariConfig;
|
|||||||
import com.zaxxer.hikari.HikariDataSource;
|
import com.zaxxer.hikari.HikariDataSource;
|
||||||
import me.skymc.taboolib.Main;
|
import me.skymc.taboolib.Main;
|
||||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||||
import me.skymc.taboolib.fileutils.FileUtils;
|
|
||||||
import me.skymc.taboolib.mysql.builder.SQLHost;
|
import me.skymc.taboolib.mysql.builder.SQLHost;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
|
||||||
|
|
||||||
import javax.sql.DataSource;
|
import javax.sql.DataSource;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
Loading…
Reference in New Issue
Block a user