commit
862e7946c6
Binary file not shown.
Binary file not shown.
Binary file not shown.
9
.idea/compiler.xml
Normal file
9
.idea/compiler.xml
Normal file
@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="CompilerConfiguration">
|
||||
<bytecodeTargetLevel>
|
||||
<module name="TabooLib_main" target="1.8" />
|
||||
<module name="TabooLib_test" target="1.8" />
|
||||
</bytecodeTargetLevel>
|
||||
</component>
|
||||
</project>
|
19
.idea/gradle.xml
Normal file
19
.idea/gradle.xml
Normal file
@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GradleSettings">
|
||||
<option name="linkedExternalProjectsSettings">
|
||||
<GradleProjectSettings>
|
||||
<option name="distributionType" value="DEFAULT_WRAPPED" />
|
||||
<option name="externalProjectPath" value="$PROJECT_DIR$" />
|
||||
<option name="gradleHome" value="C:/gradle-4.3.1" />
|
||||
<option name="gradleJvm" value="1.8" />
|
||||
<option name="modules">
|
||||
<set>
|
||||
<option value="$PROJECT_DIR$" />
|
||||
</set>
|
||||
</option>
|
||||
<option name="useAutoImport" value="true" />
|
||||
</GradleProjectSettings>
|
||||
</option>
|
||||
</component>
|
||||
</project>
|
36
.idea/inspectionProfiles/Project_Default.xml
Normal file
36
.idea/inspectionProfiles/Project_Default.xml
Normal file
@ -0,0 +1,36 @@
|
||||
<component name="InspectionProjectProfileManager">
|
||||
<profile version="1.0">
|
||||
<option name="myName" value="Project Default" />
|
||||
<inspection_tool class="JavaDoc" enabled="true" level="WARNING" enabled_by_default="true">
|
||||
<option name="TOP_LEVEL_CLASS_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="INNER_CLASS_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="METHOD_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="@return@param@throws or @exception" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="FIELD_OPTIONS">
|
||||
<value>
|
||||
<option name="ACCESS_JAVADOC_REQUIRED_FOR" value="none" />
|
||||
<option name="REQUIRED_TAGS" value="" />
|
||||
</value>
|
||||
</option>
|
||||
<option name="IGNORE_DEPRECATED" value="false" />
|
||||
<option name="IGNORE_JAVADOC_PERIOD" value="true" />
|
||||
<option name="IGNORE_DUPLICATED_THROWS" value="false" />
|
||||
<option name="IGNORE_POINT_TO_ITSELF" value="false" />
|
||||
<option name="myAdditionalJavadocTags" value="author,author" />
|
||||
</inspection_tool>
|
||||
</profile>
|
||||
</component>
|
148
.idea/modules/TabooLib_main.iml
Normal file
148
.idea/modules/TabooLib_main.iml
Normal file
@ -0,0 +1,148 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="TabooLib:main" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="minecraft" name="Minecraft">
|
||||
<configuration>
|
||||
<autoDetectTypes>
|
||||
<platformType>SPIGOT</platformType>
|
||||
</autoDetectTypes>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output url="file://$MODULE_DIR$/../../out/production/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/../../src/main">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/main/resources" type="java-resource" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_10_R1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_11_R1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_12_R1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_8_R3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_9_R3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/com.sun.tools.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/lombok.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/PlaceholderAPI.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/ProtocolLib.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Skript.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/TabooCode5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Vault.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/WorldGuard.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Yum.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
</module>
|
150
.idea/modules/TabooLib_test.iml
Normal file
150
.idea/modules/TabooLib_test.iml
Normal file
@ -0,0 +1,150 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="TabooLib:test" external.linked.project.path="$MODULE_DIR$/../.." external.root.project.path="$MODULE_DIR$/../.." external.system.id="GRADLE" external.system.module.group="" external.system.module.type="sourceSet" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="minecraft" name="Minecraft">
|
||||
<configuration>
|
||||
<autoDetectTypes>
|
||||
<platformType>SPIGOT</platformType>
|
||||
</autoDetectTypes>
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_8">
|
||||
<output-test url="file://$MODULE_DIR$/../../out/test/classes" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$/../../src/test">
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/test/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/../../src/test/resources" type="java-test-resource" />
|
||||
</content>
|
||||
<orderEntry type="inheritedJdk" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="module" module-name="TabooLib_main" />
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_10_R1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_11_R1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_12_R1.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_8_R3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/1_9_R3.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/com.sun.tools.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/lombok.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/PlaceholderAPI.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/ProtocolLib.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Skript.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/TabooCode5.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Vault.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/WorldGuard.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
<orderEntry type="module-library">
|
||||
<library>
|
||||
<CLASSES>
|
||||
<root url="jar://$MODULE_DIR$/../../libs/Yum.jar!/" />
|
||||
</CLASSES>
|
||||
<JAVADOC />
|
||||
<SOURCES />
|
||||
</library>
|
||||
</orderEntry>
|
||||
</component>
|
||||
<component name="TestModuleProperties" production-module="TabooLib_main" />
|
||||
</module>
|
7
.idea/vcs.xml
Normal file
7
.idea/vcs.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
<mapping directory="$PROJECT_DIR$" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@ -1,5 +1,6 @@
|
||||
#Sat Mar 24 22:41:19 CST 2018
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-bin.zip
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.5-all.zip
|
||||
|
@ -1,15 +1,5 @@
|
||||
package me.skymc.taboolib;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Random;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.skymc.taboolib.anvil.AnvilContainerAPI;
|
||||
@ -19,22 +9,22 @@ import me.skymc.taboolib.commands.MainCommands;
|
||||
import me.skymc.taboolib.commands.language.Language2Command;
|
||||
import me.skymc.taboolib.commands.sub.itemlist.listener.ItemLibraryPatch;
|
||||
import me.skymc.taboolib.commands.sub.sounds.listener.SoundsLibraryPatch;
|
||||
import me.skymc.taboolib.database.PlayerDataManager;
|
||||
import me.skymc.taboolib.database.GlobalDataManager;
|
||||
import me.skymc.taboolib.database.PlayerDataManager;
|
||||
import me.skymc.taboolib.economy.EcoUtils;
|
||||
import me.skymc.taboolib.entity.EntityUtils;
|
||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.inventory.speciaitem.SpecialItem;
|
||||
import me.skymc.taboolib.javashell.JavaShell;
|
||||
import me.skymc.taboolib.listener.ListenerNetWork;
|
||||
import me.skymc.taboolib.listener.ListenerPlayerCommand;
|
||||
import me.skymc.taboolib.listener.ListenerPlayerQuit;
|
||||
import me.skymc.taboolib.listener.ListenerPlayerJump;
|
||||
import me.skymc.taboolib.listener.ListenerPluginDisable;
|
||||
import me.skymc.taboolib.listener.*;
|
||||
import me.skymc.taboolib.message.ChatCatcher;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.mysql.protect.MySQLConnection;
|
||||
import me.skymc.taboolib.nms.item.DabItemUtils;
|
||||
import me.skymc.taboolib.other.NumberUtils;
|
||||
import me.skymc.taboolib.permission.PermissionUtils;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import me.skymc.taboolib.sign.SignUtils;
|
||||
import me.skymc.taboolib.skript.SkriptHandler;
|
||||
import me.skymc.taboolib.string.StringUtils;
|
||||
@ -46,11 +36,16 @@ import me.skymc.taboolib.update.UpdateTask;
|
||||
import me.skymc.tlm.TLM;
|
||||
import me.skymc.tlm.command.TLMCommands;
|
||||
import me.skymc.tlm.module.TabooLibraryModule;
|
||||
import me.skymc.taboolib.nms.item.DabItemUtils;
|
||||
import me.skymc.taboolib.other.NumberUtils;
|
||||
import me.skymc.taboolib.permission.PermissionUtils;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import net.milkbowl.vault.economy.Economy;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Random;
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public class Main extends JavaPlugin implements Listener {
|
||||
@ -199,7 +194,7 @@ public class Main extends JavaPlugin implements Listener {
|
||||
MsgUtils.send("§7游戏版本: §f" + TabooLib.getVerint());
|
||||
|
||||
// 文件保存
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> DataUtils.saveAllCaches(), 20, 20 * 120);
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, DataUtils::saveAllCaches, 20, 20 * 120);
|
||||
Bukkit.getScheduler().runTaskTimerAsynchronously(this, () -> PlayerDataManager.saveAllCaches(true, false), 20, 20 * 60);
|
||||
|
||||
// 插件联动
|
||||
@ -321,8 +316,8 @@ public class Main extends JavaPlugin implements Listener {
|
||||
getServer().getPluginManager().registerEvents(new ListenerNetWork(), this);
|
||||
}
|
||||
}
|
||||
|
||||
public static enum StorageType {
|
||||
LOCAL, SQL;
|
||||
|
||||
public enum StorageType {
|
||||
LOCAL, SQL
|
||||
}
|
||||
}
|
||||
|
@ -1,13 +1,11 @@
|
||||
package me.skymc.taboolib;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public class TabooLib {
|
||||
|
||||
|
@ -1,9 +1,6 @@
|
||||
package me.skymc.taboolib.anvil;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
import me.skymc.taboolib.anvil.versions.AnvilContainer_V1_9_4;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
@ -18,8 +15,9 @@ import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.skymc.taboolib.anvil.versions.AnvilContainer_V1_9_4;
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class AnvilContainerAPI implements Listener{
|
||||
|
||||
|
@ -1,16 +1,9 @@
|
||||
package me.skymc.taboolib.anvil.versions;
|
||||
|
||||
import net.minecraft.server.v1_11_R1.*;
|
||||
import org.bukkit.craftbukkit.v1_11_R1.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
import net.minecraft.server.v1_11_R1.BlockPosition;
|
||||
import net.minecraft.server.v1_11_R1.ChatMessage;
|
||||
import net.minecraft.server.v1_11_R1.ContainerAnvil;
|
||||
import net.minecraft.server.v1_11_R1.EntityHuman;
|
||||
import net.minecraft.server.v1_11_R1.EntityPlayer;
|
||||
import net.minecraft.server.v1_11_R1.PacketPlayOutOpenWindow;
|
||||
|
||||
public class AnvilContainer_V1_11_R1 extends ContainerAnvil {
|
||||
|
||||
public AnvilContainer_V1_11_R1(EntityHuman player)
|
||||
@ -31,7 +24,7 @@ public class AnvilContainer_V1_11_R1 extends ContainerAnvil {
|
||||
EntityPlayer player = ((CraftPlayer)p).getHandle();
|
||||
AnvilContainer_V1_11_R1 container = new AnvilContainer_V1_11_R1(player);
|
||||
int c = player.nextContainerCounter();
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing", new Object[0]), 0));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing"), 0));
|
||||
player.activeContainer = container;
|
||||
player.activeContainer.windowId = c;
|
||||
player.activeContainer.addSlotListener(player);
|
||||
|
@ -1,16 +1,9 @@
|
||||
package me.skymc.taboolib.anvil.versions;
|
||||
|
||||
import net.minecraft.server.v1_8_R3.*;
|
||||
import org.bukkit.craftbukkit.v1_8_R3.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
import net.minecraft.server.v1_8_R3.BlockPosition;
|
||||
import net.minecraft.server.v1_8_R3.ChatMessage;
|
||||
import net.minecraft.server.v1_8_R3.ContainerAnvil;
|
||||
import net.minecraft.server.v1_8_R3.EntityHuman;
|
||||
import net.minecraft.server.v1_8_R3.EntityPlayer;
|
||||
import net.minecraft.server.v1_8_R3.PacketPlayOutOpenWindow;
|
||||
|
||||
public class AnvilContainer_V1_8_R3 extends ContainerAnvil {
|
||||
|
||||
public AnvilContainer_V1_8_R3(EntityHuman player)
|
||||
@ -31,7 +24,7 @@ public class AnvilContainer_V1_8_R3 extends ContainerAnvil {
|
||||
EntityPlayer player = ((CraftPlayer)p).getHandle();
|
||||
AnvilContainer_V1_8_R3 container = new AnvilContainer_V1_8_R3(player);
|
||||
int c = player.nextContainerCounter();
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing", new Object[0]), 0));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing"), 0));
|
||||
player.activeContainer = container;
|
||||
player.activeContainer.windowId = c;
|
||||
player.activeContainer.addSlotListener(player);
|
||||
|
@ -1,16 +1,9 @@
|
||||
package me.skymc.taboolib.anvil.versions;
|
||||
|
||||
import net.minecraft.server.v1_9_R2.*;
|
||||
import org.bukkit.craftbukkit.v1_9_R2.entity.CraftPlayer;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
import net.minecraft.server.v1_9_R2.BlockPosition;
|
||||
import net.minecraft.server.v1_9_R2.ChatMessage;
|
||||
import net.minecraft.server.v1_9_R2.ContainerAnvil;
|
||||
import net.minecraft.server.v1_9_R2.EntityHuman;
|
||||
import net.minecraft.server.v1_9_R2.EntityPlayer;
|
||||
import net.minecraft.server.v1_9_R2.PacketPlayOutOpenWindow;
|
||||
|
||||
public class AnvilContainer_V1_9_4 extends ContainerAnvil {
|
||||
|
||||
public AnvilContainer_V1_9_4(EntityHuman player)
|
||||
@ -31,7 +24,7 @@ public class AnvilContainer_V1_9_4 extends ContainerAnvil {
|
||||
EntityPlayer player = ((CraftPlayer)p).getHandle();
|
||||
AnvilContainer_V1_9_4 container = new AnvilContainer_V1_9_4(player);
|
||||
int c = player.nextContainerCounter();
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing", new Object[0]), 0));
|
||||
player.playerConnection.sendPacket(new PacketPlayOutOpenWindow(c, "minecraft:anvil", new ChatMessage("Repairing"), 0));
|
||||
player.activeContainer = container;
|
||||
player.activeContainer.windowId = c;
|
||||
player.activeContainer.addSlotListener(player);
|
||||
|
@ -17,13 +17,7 @@ import java.io.IOException;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Timer;
|
||||
import java.util.TimerTask;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.Callable;
|
||||
import java.util.logging.Level;
|
||||
import java.util.zip.GZIPOutputStream;
|
||||
@ -153,12 +147,7 @@ public class Metrics {
|
||||
}
|
||||
// Nevertheless we want our code to run in the Bukkit main thread, so we have to use the Bukkit scheduler
|
||||
// Don't be afraid! The connection to the bStats server is still async, only the stats collection is sync ;)
|
||||
Bukkit.getScheduler().runTask(plugin, new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
submitData();
|
||||
}
|
||||
});
|
||||
Bukkit.getScheduler().runTask(plugin, () -> submitData());
|
||||
}
|
||||
}, 1000*60*5, 1000*60*30);
|
||||
// Submit the data every 30 minutes, first time after 5 minutes to give other plugins enough time to start
|
||||
@ -263,17 +252,14 @@ public class Metrics {
|
||||
data.put("plugins", pluginData);
|
||||
|
||||
// Create a new thread for the connection to the bStats server
|
||||
new Thread(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
// Send the data
|
||||
sendData(data);
|
||||
} catch (Exception e) {
|
||||
// Something went wrong! :(
|
||||
if (logFailedRequests) {
|
||||
plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e);
|
||||
}
|
||||
new Thread(() -> {
|
||||
try {
|
||||
// Send the data
|
||||
sendData(data);
|
||||
} catch (Exception e) {
|
||||
// Something went wrong! :(
|
||||
if (logFailedRequests) {
|
||||
plugin.getLogger().log(Level.WARNING, "Could not submit plugin stats of " + plugin.getName(), e);
|
||||
}
|
||||
}
|
||||
}).start();
|
||||
|
@ -1,38 +1,15 @@
|
||||
package me.skymc.taboolib.commands;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.commands.sub.AttributesCommand;
|
||||
import me.skymc.taboolib.commands.sub.EnchantCommand;
|
||||
import me.skymc.taboolib.commands.sub.FlagCommand;
|
||||
import me.skymc.taboolib.commands.sub.HelpCommand;
|
||||
import me.skymc.taboolib.commands.sub.ImportCommand;
|
||||
import me.skymc.taboolib.commands.sub.InfoCommand;
|
||||
import me.skymc.taboolib.commands.sub.ItemCommand;
|
||||
import me.skymc.taboolib.commands.sub.PotionCommand;
|
||||
import me.skymc.taboolib.commands.sub.SaveCommand;
|
||||
import me.skymc.taboolib.commands.sub.SlotCommand;
|
||||
import me.skymc.taboolib.commands.sub.TagDeleteCommand;
|
||||
import me.skymc.taboolib.commands.sub.TagPrefixCommand;
|
||||
import me.skymc.taboolib.commands.sub.TagSuffixCommand;
|
||||
import me.skymc.taboolib.commands.sub.VariableGetCommand;
|
||||
import me.skymc.taboolib.commands.sub.VariableSetCommand;
|
||||
import me.skymc.taboolib.commands.sub.*;
|
||||
import me.skymc.taboolib.commands.sub.cycle.CycleCommand;
|
||||
import me.skymc.taboolib.commands.sub.itemlist.ItemListCommand;
|
||||
import me.skymc.taboolib.commands.sub.shell.ShellCommand;
|
||||
import me.skymc.taboolib.commands.sub.sounds.SoundsCommand;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandExecutor;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class MainCommands implements CommandExecutor{
|
||||
|
||||
|
@ -28,7 +28,7 @@ public abstract class SubCommand {
|
||||
}
|
||||
|
||||
public String getArgs(int size) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = size ; i < args.length ; i++) {
|
||||
sb.append(args[i]);
|
||||
sb.append(" ");
|
||||
|
@ -3,8 +3,8 @@ package me.skymc.taboolib.commands;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
@Deprecated
|
||||
public abstract interface SubCommandExecutor {
|
||||
|
||||
public abstract boolean command(CommandSender sender, String[] args);
|
||||
public interface SubCommandExecutor {
|
||||
|
||||
boolean command(CommandSender sender, String[] args);
|
||||
|
||||
}
|
||||
|
@ -1,13 +1,11 @@
|
||||
package me.skymc.taboolib.commands.sub;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.jsonformatter.JSONFormatter;
|
||||
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class AttributesCommand extends SubCommand {
|
||||
|
||||
|
@ -1,19 +1,17 @@
|
||||
package me.skymc.taboolib.commands.sub;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.jsonformatter.JSONFormatter;
|
||||
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.ConsoleCommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class HelpCommand extends SubCommand {
|
||||
|
||||
|
@ -1,11 +1,5 @@
|
||||
package me.skymc.taboolib.commands.sub;
|
||||
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTItem;
|
||||
@ -14,6 +8,9 @@ import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.ShowItemEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class InfoCommand extends SubCommand {
|
||||
|
||||
|
@ -1,13 +1,11 @@
|
||||
package me.skymc.taboolib.commands.sub;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemFlag;
|
||||
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.jsonformatter.JSONFormatter;
|
||||
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class SlotCommand extends SubCommand {
|
||||
|
||||
|
@ -1,13 +1,11 @@
|
||||
package me.skymc.taboolib.commands.sub;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.team.TagManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
|
@ -1,12 +1,8 @@
|
||||
package me.skymc.taboolib.commands.sub.cycle;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.javashell.JavaShell;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class CycleCommand extends SubCommand {
|
||||
|
||||
|
@ -1,20 +1,13 @@
|
||||
package me.skymc.taboolib.commands.sub.cycle;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.database.GlobalDataManager;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.other.DateUtils;
|
||||
import me.skymc.taboolib.timecycle.TimeCycle;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleEvent;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
public class CycleInfoCommand extends SubCommand {
|
||||
|
||||
|
@ -1,19 +1,13 @@
|
||||
package me.skymc.taboolib.commands.sub.cycle;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.javashell.JavaShell;
|
||||
import me.skymc.taboolib.jsonformatter.JSONFormatter;
|
||||
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.timecycle.TimeCycle;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class CycleListCommand extends SubCommand {
|
||||
|
||||
|
@ -1,17 +1,15 @@
|
||||
package me.skymc.taboolib.commands.sub.cycle;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.database.GlobalDataManager;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.timecycle.TimeCycle;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleEvent;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleInitializeEvent;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
public class CycleUpdateCommand extends SubCommand {
|
||||
|
||||
|
@ -1,11 +1,7 @@
|
||||
package me.skymc.taboolib.commands.sub.itemlist.listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import me.skymc.taboolib.inventory.InventoryUtil;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -17,8 +13,10 @@ import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.skymc.taboolib.inventory.InventoryUtil;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
@ -26,49 +24,27 @@ import me.skymc.taboolib.inventory.ItemUtils;
|
||||
*/
|
||||
public class ItemLibraryPatch implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void inventoryClick(InventoryClickEvent e) {
|
||||
if (e.getInventory().getHolder() instanceof ItemLibraryHolder) {
|
||||
e.setCancelled(true);
|
||||
|
||||
if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR) || e.getRawSlot() >= e.getInventory().getSize()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.getRawSlot() == 47) {
|
||||
openInventory((Player) e.getWhoClicked(), ((ItemLibraryHolder) e.getInventory().getHolder()).PAGE - 1);
|
||||
}
|
||||
else if (e.getRawSlot() == 51) {
|
||||
openInventory((Player) e.getWhoClicked(), ((ItemLibraryHolder) e.getInventory().getHolder()).PAGE + 1);
|
||||
}
|
||||
else {
|
||||
e.getWhoClicked().getInventory().addItem(ItemUtils.getCacheItem(((ItemLibraryHolder) e.getInventory().getHolder()).ITEMS_DATA.get(e.getRawSlot())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开物品库界面
|
||||
*
|
||||
*
|
||||
* @param player
|
||||
* @param page
|
||||
*/
|
||||
public static void openInventory(Player player, int page) {
|
||||
ItemLibraryHolder holder = new ItemLibraryHolder(page);
|
||||
Inventory inventory = Bukkit.createInventory(holder, 54, "物品库");
|
||||
|
||||
|
||||
LinkedHashMap<String, ItemStack> map = new LinkedHashMap<>();
|
||||
map.putAll(ItemUtils.getItemCachesFinal());
|
||||
map.putAll(ItemUtils.getItemCaches());
|
||||
|
||||
|
||||
int loop = 0;
|
||||
Iterator<String> iterator = map.keySet().iterator();
|
||||
while (iterator.hasNext()) {
|
||||
String name = iterator.next();
|
||||
for (String name : map.keySet()) {
|
||||
if (loop >= (page - 1) * 28) {
|
||||
if (loop < page * 28) {
|
||||
int slot = InventoryUtil.SLOT_OF_CENTENTS.get(loop - ((page - 1) * 28));
|
||||
ItemStack item = map.get(name).clone(); {
|
||||
ItemStack item = map.get(name).clone();
|
||||
{
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
List<String> lore = meta.hasLore() ? meta.getLore() : new ArrayList<>();
|
||||
lore.add("§f");
|
||||
@ -79,14 +55,13 @@ public class ItemLibraryPatch implements Listener {
|
||||
inventory.setItem(slot, item);
|
||||
}
|
||||
holder.ITEMS_DATA.put(slot, name);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
loop++;
|
||||
}
|
||||
|
||||
|
||||
if (page > 1) {
|
||||
inventory.setItem(47, ItemUtils.setName(new ItemStack(Material.ARROW), "§f上一页"));
|
||||
}
|
||||
@ -95,6 +70,29 @@ public class ItemLibraryPatch implements Listener {
|
||||
}
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void inventoryClick(InventoryClickEvent e) {
|
||||
if (e.getInventory().getHolder() instanceof ItemLibraryHolder) {
|
||||
e.setCancelled(true);
|
||||
|
||||
if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR) || e.getRawSlot() >= e.getInventory().getSize()) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (e.getRawSlot()) {
|
||||
case 47:
|
||||
openInventory((Player) e.getWhoClicked(), ((ItemLibraryHolder) e.getInventory().getHolder()).PAGE - 1);
|
||||
break;
|
||||
case 51:
|
||||
openInventory((Player) e.getWhoClicked(), ((ItemLibraryHolder) e.getInventory().getHolder()).PAGE + 1);
|
||||
break;
|
||||
default:
|
||||
e.getWhoClicked().getInventory().addItem(ItemUtils.getCacheItem(((ItemLibraryHolder) e.getInventory().getHolder()).ITEMS_DATA.get(e.getRawSlot())));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class ItemLibraryHolder implements InventoryHolder {
|
||||
|
||||
|
@ -1,12 +1,8 @@
|
||||
package me.skymc.taboolib.commands.sub.shell;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
import me.skymc.taboolib.commands.SubCommand;
|
||||
import me.skymc.taboolib.javashell.JavaShell;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.command.CommandSender;
|
||||
|
||||
public class ShellCommand extends SubCommand {
|
||||
|
||||
|
@ -1,12 +1,7 @@
|
||||
package me.skymc.taboolib.commands.sub.sounds.listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import me.skymc.taboolib.inventory.InventoryUtil;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Sound;
|
||||
@ -19,8 +14,8 @@ import org.bukkit.inventory.InventoryHolder;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.skymc.taboolib.inventory.InventoryUtil;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
@ -28,51 +23,23 @@ import me.skymc.taboolib.inventory.ItemUtils;
|
||||
*/
|
||||
public class SoundsLibraryPatch implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void inventoryClick(InventoryClickEvent e) {
|
||||
if (e.getInventory().getHolder() instanceof SoundLibraryHolder) {
|
||||
e.setCancelled(true);
|
||||
|
||||
if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR) || e.getRawSlot() >= e.getInventory().getSize()) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (e.getRawSlot() == 47) {
|
||||
openInventory((Player) e.getWhoClicked(), ((SoundLibraryHolder) e.getInventory().getHolder()).PAGE - 1);
|
||||
}
|
||||
else if (e.getRawSlot() == 51) {
|
||||
openInventory((Player) e.getWhoClicked(), ((SoundLibraryHolder) e.getInventory().getHolder()).PAGE + 1);
|
||||
}
|
||||
else {
|
||||
Sound sound = ((SoundLibraryHolder) e.getInventory().getHolder()).SOUNDS_DATA.get(e.getRawSlot());
|
||||
if (e.getClick().isLeftClick()) {
|
||||
((Player) e.getWhoClicked()).playSound(e.getWhoClicked().getLocation(), sound, 1f, 1f);
|
||||
}
|
||||
else {
|
||||
((Player) e.getWhoClicked()).playSound(e.getWhoClicked().getLocation(), sound, 1f, 2f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 打开物品库界面
|
||||
*
|
||||
*
|
||||
* @param player
|
||||
* @param page
|
||||
*/
|
||||
public static void openInventory(Player player, int page) {
|
||||
SoundLibraryHolder holder = new SoundLibraryHolder(page);
|
||||
Inventory inventory = Bukkit.createInventory(holder, 54, "音效库 " + page);
|
||||
|
||||
|
||||
int loop = 0;
|
||||
Iterator<Sound> iterator = Arrays.asList(Sound.values()).iterator();
|
||||
while (iterator.hasNext()) {
|
||||
Sound sound = iterator.next();
|
||||
for (Sound sound : Arrays.asList(Sound.values())) {
|
||||
if (loop >= (page - 1) * 28) {
|
||||
if (loop < page * 28) {
|
||||
int slot = InventoryUtil.SLOT_OF_CENTENTS.get(loop - ((page - 1) * 28));
|
||||
ItemStack item = new ItemStack(Material.MAP); {
|
||||
ItemStack item = new ItemStack(Material.MAP);
|
||||
{
|
||||
ItemMeta meta = item.getItemMeta();
|
||||
meta.setDisplayName("§f" + sound.name());
|
||||
meta.setLore(Arrays.asList("", "§f左键: §71 音调", "§f左键: §72 音调"));
|
||||
@ -80,14 +47,13 @@ public class SoundsLibraryPatch implements Listener {
|
||||
inventory.setItem(slot, item);
|
||||
}
|
||||
holder.SOUNDS_DATA.put(slot, sound);
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
loop++;
|
||||
}
|
||||
|
||||
|
||||
if (page > 1) {
|
||||
inventory.setItem(47, ItemUtils.setName(new ItemStack(Material.ARROW), "§f上一页"));
|
||||
}
|
||||
@ -96,6 +62,34 @@ public class SoundsLibraryPatch implements Listener {
|
||||
}
|
||||
player.openInventory(inventory);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void inventoryClick(InventoryClickEvent e) {
|
||||
if (e.getInventory().getHolder() instanceof SoundLibraryHolder) {
|
||||
e.setCancelled(true);
|
||||
|
||||
if (e.getCurrentItem() == null || e.getCurrentItem().getType().equals(Material.AIR) || e.getRawSlot() >= e.getInventory().getSize()) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (e.getRawSlot()) {
|
||||
case 47:
|
||||
openInventory((Player) e.getWhoClicked(), ((SoundLibraryHolder) e.getInventory().getHolder()).PAGE - 1);
|
||||
break;
|
||||
case 51:
|
||||
openInventory((Player) e.getWhoClicked(), ((SoundLibraryHolder) e.getInventory().getHolder()).PAGE + 1);
|
||||
break;
|
||||
default:
|
||||
Sound sound = ((SoundLibraryHolder) e.getInventory().getHolder()).SOUNDS_DATA.get(e.getRawSlot());
|
||||
if (e.getClick().isLeftClick()) {
|
||||
((Player) e.getWhoClicked()).playSound(e.getWhoClicked().getLocation(), sound, 1f, 1f);
|
||||
} else {
|
||||
((Player) e.getWhoClicked()).playSound(e.getWhoClicked().getLocation(), sound, 1f, 2f);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static class SoundLibraryHolder implements InventoryHolder {
|
||||
|
||||
|
@ -2,8 +2,6 @@ package me.skymc.taboolib.cooldown;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
@Deprecated
|
||||
public class CooldownPack {
|
||||
|
||||
|
@ -1,19 +1,13 @@
|
||||
package me.skymc.taboolib.cooldown;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
@Deprecated
|
||||
public class CooldownUtils implements Listener {
|
||||
|
@ -2,9 +2,6 @@ package me.skymc.taboolib.cooldown.seconds;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
public class CooldownPack2 {
|
||||
|
||||
private String plugin;
|
||||
|
@ -1,19 +1,12 @@
|
||||
package me.skymc.taboolib.cooldown.seconds;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class CooldownUtils2 implements Listener {
|
||||
|
||||
|
@ -1,9 +1,9 @@
|
||||
package me.skymc.taboolib.csvutils;
|
||||
|
||||
import java.nio.charset.*;
|
||||
import java.text.*;
|
||||
import java.io.*;
|
||||
import java.util.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.text.NumberFormat;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class CsvReader
|
||||
{
|
||||
@ -503,7 +503,6 @@ public class CsvReader
|
||||
this.close();
|
||||
throw new IOException("Maximum column length of 100,000 exceeded in column " + NumberFormat.getIntegerInstance().format(this.columnsCount) + " in record " + NumberFormat.getIntegerInstance().format(this.currentRecord) + ". Set the SafetySwitch property to false" + " if you're expecting column lengths greater than 100,000 characters to" + " avoid this error.");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
} while (this.hasMoreData && this.startedColumn);
|
||||
}
|
||||
@ -714,7 +713,6 @@ public class CsvReader
|
||||
this.close();
|
||||
throw new IOException("Maximum column length of 100,000 exceeded in column " + NumberFormat.getIntegerInstance().format(this.columnsCount) + " in record " + NumberFormat.getIntegerInstance().format(this.currentRecord) + ". Set the SafetySwitch property to false" + " if you're expecting column lengths greater than 100,000 characters to" + " avoid this error.");
|
||||
}
|
||||
continue;
|
||||
}
|
||||
} while (this.hasMoreData && this.startedColumn);
|
||||
}
|
||||
@ -880,8 +878,8 @@ public class CsvReader
|
||||
}
|
||||
this.dataBuffer.ColumnStart = this.dataBuffer.Position + 1;
|
||||
}
|
||||
|
||||
public void endRecord() throws IOException {
|
||||
|
||||
public void endRecord() {
|
||||
this.hasReadNextLine = true;
|
||||
++this.currentRecord;
|
||||
}
|
||||
@ -960,8 +958,8 @@ public class CsvReader
|
||||
if (this.initialized) {
|
||||
this.inputStream.close();
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
catch (Exception ex) {}
|
||||
this.inputStream = null;
|
||||
this.closed = true;
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
package me.skymc.taboolib.csvutils;
|
||||
|
||||
import java.nio.charset.*;
|
||||
import java.io.*;
|
||||
import java.nio.charset.Charset;
|
||||
|
||||
public class CsvWriter
|
||||
{
|
||||
@ -202,14 +202,22 @@ public class CsvWriter
|
||||
}
|
||||
this.firstColumn = true;
|
||||
}
|
||||
|
||||
public void writeRecord(final String[] array, final boolean b) throws IOException {
|
||||
if (array != null && array.length > 0) {
|
||||
for (int i = 0; i < array.length; ++i) {
|
||||
this.write(array[i], b);
|
||||
|
||||
public static String replace(final String s, final String s2, final String s3) {
|
||||
final int length = s2.length();
|
||||
int i = s.indexOf(s2);
|
||||
if (i > -1) {
|
||||
final StringBuilder sb = new StringBuilder();
|
||||
int n;
|
||||
for (n = 0; i != -1; i = s.indexOf(s2, n)) {
|
||||
sb.append(s.substring(n, i));
|
||||
sb.append(s3);
|
||||
n = i + length;
|
||||
}
|
||||
this.endRecord();
|
||||
sb.append(s.substring(n));
|
||||
return sb.toString();
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
public void writeRecord(final String[] array) throws IOException {
|
||||
@ -247,6 +255,25 @@ public class CsvWriter
|
||||
this.closed = true;
|
||||
}
|
||||
}
|
||||
|
||||
public void writeRecord(final String[] array, final boolean b) throws IOException {
|
||||
if (array != null && array.length > 0) {
|
||||
for (String anArray : array) {
|
||||
this.write(anArray, b);
|
||||
}
|
||||
this.endRecord();
|
||||
}
|
||||
}
|
||||
|
||||
private void checkClosed() throws IOException {
|
||||
if (this.closed) {
|
||||
throw new IOException("This instance of the CsvWriter class has already been closed.");
|
||||
}
|
||||
}
|
||||
|
||||
protected void finalize() {
|
||||
this.close(false);
|
||||
}
|
||||
|
||||
private void close(final boolean b) {
|
||||
if (!this.closed) {
|
||||
@ -257,40 +284,13 @@ public class CsvWriter
|
||||
if (this.initialized) {
|
||||
this.outputStream.close();
|
||||
}
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
catch (Exception ex) {}
|
||||
this.outputStream = null;
|
||||
this.closed = true;
|
||||
}
|
||||
}
|
||||
|
||||
private void checkClosed() throws IOException {
|
||||
if (this.closed) {
|
||||
throw new IOException("This instance of the CsvWriter class has already been closed.");
|
||||
}
|
||||
}
|
||||
|
||||
protected void finalize() {
|
||||
this.close(false);
|
||||
}
|
||||
|
||||
public static String replace(final String s, final String s2, final String s3) {
|
||||
final int length = s2.length();
|
||||
int i = s.indexOf(s2);
|
||||
if (i > -1) {
|
||||
final StringBuffer sb = new StringBuffer();
|
||||
int n;
|
||||
for (n = 0; i != -1; i = s.indexOf(s2, n)) {
|
||||
sb.append(s.substring(n, i));
|
||||
sb.append(s3);
|
||||
n = i + length;
|
||||
}
|
||||
sb.append(s.substring(n));
|
||||
return sb.toString();
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
private class UserSettings
|
||||
{
|
||||
public char TextQualifier;
|
||||
|
@ -1,12 +1,11 @@
|
||||
package me.skymc.taboolib.damage;
|
||||
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
|
||||
public class DamageUtils {
|
||||
|
||||
@ -31,7 +30,7 @@ public class DamageUtils {
|
||||
Object localObject1 = null;
|
||||
try
|
||||
{
|
||||
localObject1 = paramLivingEntity1.getClass().getDeclaredMethod("getHandle", new Class[0]).invoke(paramLivingEntity1, new Object[0]);
|
||||
localObject1 = paramLivingEntity1.getClass().getDeclaredMethod("getHandle", new Class[0]).invoke(paramLivingEntity1);
|
||||
}
|
||||
catch (IllegalAccessException|IllegalArgumentException|InvocationTargetException|NoSuchMethodException|SecurityException localIllegalAccessException1)
|
||||
{
|
||||
@ -41,7 +40,7 @@ public class DamageUtils {
|
||||
Object localObject2 = null;
|
||||
try
|
||||
{
|
||||
localObject2 = paramLivingEntity2.getClass().getDeclaredMethod("getHandle", new Class[0]).invoke(paramLivingEntity2, new Object[0]);
|
||||
localObject2 = paramLivingEntity2.getClass().getDeclaredMethod("getHandle", new Class[0]).invoke(paramLivingEntity2);
|
||||
}
|
||||
catch (IllegalAccessException|IllegalArgumentException|InvocationTargetException|NoSuchMethodException|SecurityException localIllegalAccessException2)
|
||||
{
|
||||
@ -51,14 +50,12 @@ public class DamageUtils {
|
||||
try
|
||||
{
|
||||
Class<?> DamageSource = nmsClass("DamageSource");
|
||||
Object localObject3 = DamageSource.getDeclaredMethod("playerAttack", new Class[] { nmsClass("EntityHuman") }).invoke(DamageSource, new Object[] { localObject1 });
|
||||
|
||||
localObject2.getClass().getDeclaredMethod("damageEntity", new Class[] { DamageSource, Float.TYPE }).invoke(localObject2, new Object[] { localObject3, Float.valueOf((float) paramDouble) });
|
||||
}
|
||||
catch (IllegalAccessException|IllegalArgumentException|InvocationTargetException|NoSuchMethodException|SecurityException localIllegalAccessException3)
|
||||
Object localObject3 = DamageSource.getDeclaredMethod("playerAttack", new Class[]{nmsClass("EntityHuman")}).invoke(DamageSource, localObject1);
|
||||
|
||||
localObject2.getClass().getDeclaredMethod("damageEntity", new Class[]{DamageSource, Float.TYPE}).invoke(localObject2, localObject3, (float) paramDouble);
|
||||
} catch (IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException ignored)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static Class<?> nmsClass(String paramString)
|
||||
|
@ -1,12 +1,9 @@
|
||||
package me.skymc.taboolib.damage;
|
||||
|
||||
import org.bukkit.entity.Arrow;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.entity.Projectile;
|
||||
import org.bukkit.event.entity.EntityDeathEvent;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
|
||||
public class GetKiller {
|
||||
|
||||
public static Player get(EntityDeathEvent e) {
|
||||
|
@ -1,20 +1,18 @@
|
||||
package me.skymc.taboolib.database;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.Main.StorageType;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.Main.StorageType;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
|
||||
public class GlobalDataManager {
|
||||
|
||||
public static FileConfiguration data = DataUtils.addPluginData("TabooLibrary-Variable.yml", null);
|
||||
@ -92,7 +90,7 @@ public class GlobalDataManager {
|
||||
*/
|
||||
public static boolean contains(String name) {
|
||||
if (Main.getStorageType() == StorageType.SQL) {
|
||||
return getVariable(name, null) == null ? false : true;
|
||||
return getVariable(name, null) != null;
|
||||
}
|
||||
else {
|
||||
return data.contains(name.replace(":", "-"));
|
||||
@ -107,7 +105,7 @@ public class GlobalDataManager {
|
||||
*/
|
||||
public static boolean containsAsynchronous(String name) {
|
||||
if (Main.getStorageType() == StorageType.SQL) {
|
||||
return getVariableAsynchronous(name, null) == null ? false : true;
|
||||
return getVariableAsynchronous(name, null) != null;
|
||||
}
|
||||
else {
|
||||
return contains(name);
|
||||
@ -316,10 +314,6 @@ public class GlobalDataManager {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
/**
|
||||
* 根据正序排列获取所有变量
|
||||
* 新的变量会覆盖旧的变量
|
||||
*/
|
||||
LinkedList<HashMap<String, Object>> list = Main.getConnection().getValues(Main.getTablePrefix() + "_plugindata", "id", -1, false, "name", "variable", "upgrade");
|
||||
// 循环变量
|
||||
for (HashMap<String, Object> value : list) {
|
||||
|
@ -1,9 +1,12 @@
|
||||
package me.skymc.taboolib.database;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.Main.StorageType;
|
||||
import me.skymc.taboolib.events.PlayerLoadedEvent;
|
||||
import me.skymc.taboolib.exception.PlayerOfflineException;
|
||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||
import me.skymc.taboolib.fileutils.FileUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.OfflinePlayer;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
@ -15,20 +18,16 @@ import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.Main.StorageType;
|
||||
import me.skymc.taboolib.events.PlayerLoadedEvent;
|
||||
import me.skymc.taboolib.exception.PlayerOfflineException;
|
||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||
import me.skymc.taboolib.fileutils.FileUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import java.io.File;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
public class PlayerDataManager implements Listener {
|
||||
|
||||
private static final ConcurrentHashMap<String, FileConfiguration> PLAYER_DATA = new ConcurrentHashMap<>();
|
||||
|
||||
public static enum UsernameType {
|
||||
UUID, USERNAME;
|
||||
|
||||
public enum UsernameType {
|
||||
UUID, USERNAME
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1,10 +1,10 @@
|
||||
package me.skymc.taboolib.display;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import java.lang.reflect.Constructor;
|
||||
|
||||
public class ActionUtils {
|
||||
|
||||
@ -12,9 +12,9 @@ public class ActionUtils {
|
||||
{
|
||||
try
|
||||
{
|
||||
Object handle = player.getClass().getMethod("getHandle", new Class[0]).invoke(player, new Object[0]);
|
||||
Object handle = player.getClass().getMethod("getHandle", new Class[0]).invoke(player);
|
||||
Object playerConnection = handle.getClass().getField("playerConnection").get(handle);
|
||||
playerConnection.getClass().getMethod("sendPacket", new Class[] { getNMSClass("Packet") }).invoke(playerConnection, new Object[] { packet });
|
||||
playerConnection.getClass().getMethod("sendPacket", new Class[]{getNMSClass("Packet")}).invoke(playerConnection, packet);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -43,7 +43,7 @@ public class ActionUtils {
|
||||
}
|
||||
try
|
||||
{
|
||||
Object ab = getNMSClass("ChatComponentText").getConstructor(new Class[] { String.class }).newInstance(new Object[] { msg });
|
||||
Object ab = getNMSClass("ChatComponentText").getConstructor(new Class[]{String.class}).newInstance(msg);
|
||||
Constructor<?> ac = null;
|
||||
Object abPacket = null;
|
||||
// 如果版本大于 1.11.0
|
||||
@ -53,7 +53,7 @@ public class ActionUtils {
|
||||
abPacket = ac.newInstance(ab, chatMessageType.getMethod("a", Byte.TYPE).invoke(null, (byte) 2));
|
||||
} else {
|
||||
ac = getNMSClass("PacketPlayOutChat").getConstructor(getNMSClass("IChatBaseComponent"), Byte.TYPE);
|
||||
abPacket = ac.newInstance(ab, Byte.valueOf((byte) 2));
|
||||
abPacket = ac.newInstance(ab, (byte) 2);
|
||||
}
|
||||
sendPacket(p, abPacket);
|
||||
}
|
||||
|
@ -1,10 +1,8 @@
|
||||
package me.skymc.taboolib.display;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
import java.lang.reflect.Constructor;
|
||||
|
||||
public class TitleUtils {
|
||||
|
||||
@ -12,9 +10,9 @@ public class TitleUtils {
|
||||
{
|
||||
try
|
||||
{
|
||||
Object handle = player.getClass().getMethod("getHandle", new Class[0]).invoke(player, new Object[0]);
|
||||
Object handle = player.getClass().getMethod("getHandle", new Class[0]).invoke(player);
|
||||
Object playerConnection = handle.getClass().getField("playerConnection").get(handle);
|
||||
playerConnection.getClass().getMethod("sendPacket", new Class[] { getNMSClass("Packet") }).invoke(playerConnection, new Object[] { packet });
|
||||
playerConnection.getClass().getMethod("sendPacket", new Class[]{getNMSClass("Packet")}).invoke(playerConnection, packet);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@ -53,29 +51,29 @@ public class TitleUtils {
|
||||
if (title != null)
|
||||
{
|
||||
Object e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TIMES").get(null);
|
||||
Object chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[] { String.class }).invoke(null, new Object[] { "{\"text\":\"" + title + "\"}" });
|
||||
Constructor<?> subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[] { getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE });
|
||||
Object titlePacket = subtitleConstructor.newInstance(new Object[] { e, chatTitle, Integer.valueOf(fadeint), Integer.valueOf(stayt), Integer.valueOf(fadeoutt) });
|
||||
Object chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + title + "\"}");
|
||||
Constructor<?> subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE);
|
||||
Object titlePacket = subtitleConstructor.newInstance(e, chatTitle, fadeint, stayt, fadeoutt);
|
||||
sendPacket(p, titlePacket);
|
||||
|
||||
e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TITLE").get(null);
|
||||
chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[] { String.class }).invoke(null, new Object[] { "{\"text\":\"" + title + "\"}" });
|
||||
subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[] { getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent") });
|
||||
titlePacket = subtitleConstructor.newInstance(new Object[] { e, chatTitle });
|
||||
chatTitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + title + "\"}");
|
||||
subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"));
|
||||
titlePacket = subtitleConstructor.newInstance(e, chatTitle);
|
||||
sendPacket(p, titlePacket);
|
||||
}
|
||||
if (subtitle != null)
|
||||
{
|
||||
Object e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("TIMES").get(null);
|
||||
Object chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[] { String.class }).invoke(null, new Object[] { "{\"text\":\"" + title + "\"}" });
|
||||
Constructor<?> subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[] { getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE });
|
||||
Object subtitlePacket = subtitleConstructor.newInstance(new Object[] { e, chatSubtitle, Integer.valueOf(fadeinst), Integer.valueOf(stayst), Integer.valueOf(fadeoutst) });
|
||||
Object chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + title + "\"}");
|
||||
Constructor<?> subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE);
|
||||
Object subtitlePacket = subtitleConstructor.newInstance(e, chatSubtitle, fadeinst, stayst, fadeoutst);
|
||||
sendPacket(p, subtitlePacket);
|
||||
|
||||
e = getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0].getField("SUBTITLE").get(null);
|
||||
chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[] { String.class }).invoke(null, new Object[] { "{\"text\":\"" + subtitle + "\"}" });
|
||||
subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(new Class[] { getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE });
|
||||
subtitlePacket = subtitleConstructor.newInstance(new Object[] { e, chatSubtitle, Integer.valueOf(fadeinst), Integer.valueOf(stayst), Integer.valueOf(fadeoutst) });
|
||||
chatSubtitle = getNMSClass("IChatBaseComponent").getDeclaredClasses()[0].getMethod("a", new Class[]{String.class}).invoke(null, "{\"text\":\"" + subtitle + "\"}");
|
||||
subtitleConstructor = getNMSClass("PacketPlayOutTitle").getConstructor(getNMSClass("PacketPlayOutTitle").getDeclaredClasses()[0], getNMSClass("IChatBaseComponent"), Integer.TYPE, Integer.TYPE, Integer.TYPE);
|
||||
subtitlePacket = subtitleConstructor.newInstance(e, chatSubtitle, fadeinst, stayst, fadeoutst);
|
||||
sendPacket(p, subtitlePacket);
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,13 @@
|
||||
package me.skymc.taboolib.entity;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
|
||||
/**
|
||||
* 伪 - MetaData
|
||||
*
|
||||
@ -67,8 +66,7 @@ public class EntityTag {
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param entity 实体
|
||||
*/
|
||||
*/
|
||||
public void set(String key, Object value, Entity... entities) {
|
||||
for (Entity entity : entities) set(key, value, entity);
|
||||
}
|
||||
@ -78,8 +76,7 @@ public class EntityTag {
|
||||
*
|
||||
* @param key 键
|
||||
* @param value 值
|
||||
* @param entity 实体
|
||||
*/
|
||||
*/
|
||||
public void set(String key, Object value, List<Entity> entities) {
|
||||
for (Entity entity : entities) set(key, value, entity);
|
||||
}
|
||||
@ -138,11 +135,8 @@ public class EntityTag {
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean hasKey(String key, Entity entity) {
|
||||
if (contains(entity)) {
|
||||
return entityData.get(entity.getUniqueId()).containsKey(key);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return contains(entity) && entityData.get(entity.getUniqueId()).containsKey(key);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据
|
||||
@ -211,12 +205,9 @@ public class EntityTag {
|
||||
* @return boolean
|
||||
*/
|
||||
public boolean getBoolean(String key, Entity entity) {
|
||||
Object object = get(key, entity);
|
||||
if (object != null) {
|
||||
return (boolean) object;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
Object object = get(key, entity);
|
||||
return object != null && (boolean) object;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取数据
|
||||
|
@ -1,7 +1,6 @@
|
||||
package me.skymc.taboolib.events;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
package me.skymc.taboolib.events;
|
||||
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.Cancellable;
|
||||
import org.bukkit.event.Event;
|
||||
import org.bukkit.event.HandlerList;
|
||||
|
||||
|
@ -1,21 +1,13 @@
|
||||
package me.skymc.taboolib.fileutils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.StringReader;
|
||||
import java.util.HashMap;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
import org.yaml.snakeyaml.external.biz.base64Coder.Base64Coder;
|
||||
|
||||
import com.google.common.base.Charsets;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import java.io.*;
|
||||
|
||||
public class ConfigUtils {
|
||||
|
||||
@ -47,8 +39,6 @@ public class ConfigUtils {
|
||||
/**
|
||||
* 以 UTF-8 的格式载入配置文件
|
||||
*
|
||||
* @param main
|
||||
* @param filename
|
||||
* @return
|
||||
*/
|
||||
public static FileConfiguration load(Plugin plugin, File file) {
|
||||
|
@ -7,8 +7,6 @@ import java.io.IOException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.channels.FileChannel;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
|
||||
@Deprecated
|
||||
public class CopyUtils {
|
||||
|
||||
|
@ -1,13 +1,6 @@
|
||||
package me.skymc.taboolib.fileutils;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.FilenameFilter;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.OutputStream;
|
||||
import java.io.OutputStreamWriter;
|
||||
import java.io.*;
|
||||
import java.nio.charset.Charset;
|
||||
import java.nio.charset.UnsupportedCharsetException;
|
||||
|
||||
@ -40,7 +33,6 @@ public class EncodeUtils {
|
||||
/**
|
||||
* 把指定文件或目录转换成指定的编码
|
||||
*
|
||||
* @param file 要转换的文件或目录
|
||||
* @param fromCharsetName 源文件的编码
|
||||
* @param toCharsetName 转换的编码
|
||||
* @param filter 文件名过滤器
|
||||
|
@ -1,13 +1,12 @@
|
||||
package me.skymc.taboolib.fileutils;
|
||||
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
|
||||
import java.io.*;
|
||||
import java.net.HttpURLConnection;
|
||||
import java.net.URL;
|
||||
import java.net.URLConnection;
|
||||
import java.nio.channels.FileChannel;
|
||||
import java.util.List;
|
||||
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
|
||||
public class FileUtils {
|
||||
|
||||
@ -17,9 +16,9 @@ public class FileUtils {
|
||||
URL url = new URL("http://1212.ip138.com/ic.asp");
|
||||
URLConnection con = url.openConnection();
|
||||
ins = con.getInputStream();
|
||||
InputStreamReader isReader = new InputStreamReader(ins, "GB2312");
|
||||
BufferedReader bReader = new BufferedReader(isReader);
|
||||
StringBuffer webContent = new StringBuffer();
|
||||
InputStreamReader isReader = new InputStreamReader(ins, "GB2312");
|
||||
BufferedReader bReader = new BufferedReader(isReader);
|
||||
StringBuilder webContent = new StringBuilder();
|
||||
String str = null;
|
||||
while ((str = bReader.readLine()) != null) {
|
||||
webContent.append(str);
|
||||
@ -83,12 +82,12 @@ public class FileUtils {
|
||||
}
|
||||
if (file.isFile()) {
|
||||
file.delete();
|
||||
return;
|
||||
}
|
||||
File[] files = file.listFiles();
|
||||
for (int i = 0; i < files.length; i++) {
|
||||
deleteAllFile(files[i]);
|
||||
}
|
||||
return;
|
||||
}
|
||||
File[] files = file.listFiles();
|
||||
for (File file1 : files) {
|
||||
deleteAllFile(file1);
|
||||
}
|
||||
file.delete();
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,13 @@
|
||||
package me.skymc.taboolib.fileutils;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.other.DateUtils;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.io.BufferedWriter;
|
||||
import java.io.File;
|
||||
import java.io.FileWriter;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
import me.skymc.taboolib.other.DateUtils;
|
||||
|
||||
@Deprecated
|
||||
public class LogUtils {
|
||||
|
||||
|
@ -1,16 +1,12 @@
|
||||
package me.skymc.taboolib.inventory;
|
||||
|
||||
import java.util.Random;
|
||||
|
||||
import me.skymc.taboolib.other.NumberUtils;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Item;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import me.skymc.taboolib.other.NumberUtils;
|
||||
|
||||
public class DropUtils {
|
||||
|
||||
public static Item drop(Player player, ItemStack itemStack, double bulletSpread, double radius) {
|
||||
|
@ -1,15 +1,11 @@
|
||||
package me.skymc.taboolib.inventory;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.Inventory;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
import java.util.Arrays;
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class InventoryUtil {
|
||||
|
||||
@ -62,27 +58,13 @@ public class InventoryUtil {
|
||||
for (int i = 0; i < player.getInventory().getSize() && remove; i++) {
|
||||
ItemStack _item = player.getInventory().getItem(i);
|
||||
if (_item != null && _item.isSimilar(item)) {
|
||||
/**
|
||||
* 如果循环到的物品数量 小于 需要的数量
|
||||
* 则 删除物品,减少需要的数量
|
||||
*/
|
||||
if (_item.getAmount() < requireAmount) {
|
||||
player.getInventory().setItem(i, null);
|
||||
requireAmount -= _item.getAmount();
|
||||
}
|
||||
/**
|
||||
* 如果循环到的物品数量 等于 需要的数量
|
||||
* 则 删除物品,直接结束
|
||||
*/
|
||||
else if (_item.getAmount() == requireAmount) {
|
||||
} else if (_item.getAmount() == requireAmount) {
|
||||
player.getInventory().setItem(i, null);
|
||||
return true;
|
||||
}
|
||||
/**
|
||||
* 如果循环到的物品数量 大于 需要的数量
|
||||
* 则扣除 需要的数量
|
||||
*/
|
||||
else {
|
||||
} else {
|
||||
_item.setAmount(_item.getAmount() - requireAmount);
|
||||
return true;
|
||||
}
|
||||
@ -101,11 +83,8 @@ public class InventoryUtil {
|
||||
}
|
||||
}
|
||||
}
|
||||
if (inventoryAmount >= amount) {
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return inventoryAmount >= amount;
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public static boolean takeItem2(Inventory inv, ItemStack takeitem, Integer amount) {
|
||||
|
@ -1,14 +1,17 @@
|
||||
package me.skymc.taboolib.inventory;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import lombok.Getter;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTItem;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTList;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTListCompound;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTType;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.other.NumberUtils;
|
||||
import me.skymc.taboolib.string.Language;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
@ -25,18 +28,10 @@ import org.bukkit.inventory.meta.PotionMeta;
|
||||
import org.bukkit.potion.PotionEffect;
|
||||
import org.bukkit.potion.PotionEffectType;
|
||||
|
||||
import lombok.Getter;
|
||||
import me.clip.placeholderapi.PlaceholderAPI;
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.fileutils.ConfigUtils;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTItem;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTList;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTListCompound;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTType;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.other.NumberUtils;
|
||||
import me.skymc.taboolib.string.Language;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.LinkedHashMap;
|
||||
import java.util.List;
|
||||
|
||||
public class ItemUtils {
|
||||
|
||||
@ -150,8 +145,7 @@ public class ItemUtils {
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static ItemStack item(int n, int a, int d) {
|
||||
ItemStack item = new ItemStack(n, a, (short)d);
|
||||
return item;
|
||||
return new ItemStack(n, a, (short) d);
|
||||
}
|
||||
|
||||
public static ItemStack setName(ItemStack i, String n) {
|
||||
@ -180,17 +174,11 @@ public class ItemUtils {
|
||||
}
|
||||
|
||||
public static boolean isName(ItemStack i, String a) {
|
||||
if (!isNamed(i) || i.getItemMeta() == null || i.getItemMeta().getDisplayName() == null || !i.getItemMeta().getDisplayName().equals(a)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return isNamed(i) && i.getItemMeta() != null && i.getItemMeta().getDisplayName() != null && i.getItemMeta().getDisplayName().equals(a);
|
||||
}
|
||||
|
||||
public static boolean isNameAs(ItemStack i, String a) {
|
||||
if (!isNamed(i) || !i.getItemMeta().getDisplayName().contains(a)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return isNamed(i) && i.getItemMeta().getDisplayName().contains(a);
|
||||
}
|
||||
|
||||
public static String asString(String args, Player placeholderPlayer) {
|
||||
@ -259,27 +247,22 @@ public class ItemUtils {
|
||||
}
|
||||
|
||||
public static String asAttribute(String name) {
|
||||
if (name.toLowerCase().equals("damage")) {
|
||||
return "generic.attackDamage";
|
||||
}
|
||||
else if (name.toLowerCase().equals("attackspeed")) {
|
||||
return "generic.attackSpeed";
|
||||
}
|
||||
else if (name.toLowerCase().equals("health")) {
|
||||
return "generic.maxHealth";
|
||||
}
|
||||
else if (name.toLowerCase().equals("speed")) {
|
||||
return "generic.movementSpeed";
|
||||
}
|
||||
else if (name.toLowerCase().equals("knockback")) {
|
||||
return "generic.knockbackResistance";
|
||||
}
|
||||
else if (name.toLowerCase().equals("armor")) {
|
||||
return "generic.armor";
|
||||
}
|
||||
else if (name.toLowerCase().equals("luck")) {
|
||||
return "generic.luck";
|
||||
}
|
||||
switch (name.toLowerCase()) {
|
||||
case "damage":
|
||||
return "generic.attackDamage";
|
||||
case "attackspeed":
|
||||
return "generic.attackSpeed";
|
||||
case "health":
|
||||
return "generic.maxHealth";
|
||||
case "speed":
|
||||
return "generic.movementSpeed";
|
||||
case "knockback":
|
||||
return "generic.knockbackResistance";
|
||||
case "armor":
|
||||
return "generic.armor";
|
||||
case "luck":
|
||||
return "generic.luck";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@ -290,10 +273,7 @@ public class ItemUtils {
|
||||
* @param a 关键字
|
||||
*/
|
||||
public static boolean hasLore(ItemStack i, String a) {
|
||||
if (!isLored(i) || !i.getItemMeta().getLore().toString().contains(a)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return isLored(i) && i.getItemMeta().getLore().toString().contains(a);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -303,10 +283,7 @@ public class ItemUtils {
|
||||
* @return
|
||||
*/
|
||||
public static boolean isLored(ItemStack i) {
|
||||
if (i == null || i.getItemMeta() == null || i.getItemMeta().getLore() == null) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return i != null && i.getItemMeta() != null && i.getItemMeta().getLore() != null;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -316,10 +293,7 @@ public class ItemUtils {
|
||||
* @return
|
||||
*/
|
||||
public static boolean isNamed(ItemStack i) {
|
||||
if (i == null || i.getItemMeta() == null || i.getItemMeta().getDisplayName() == null) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
return i != null && i.getItemMeta() != null && i.getItemMeta().getDisplayName() != null;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -8,7 +8,7 @@ import org.bukkit.plugin.Plugin;
|
||||
* @author sky
|
||||
* @since 2018年2月17日 下午8:35:42
|
||||
*/
|
||||
public abstract interface AbstractSpecialItem {
|
||||
public interface AbstractSpecialItem {
|
||||
|
||||
/**
|
||||
* 当接口被载入
|
||||
@ -25,14 +25,14 @@ public abstract interface AbstractSpecialItem {
|
||||
*
|
||||
* @return String
|
||||
*/
|
||||
abstract String getName();
|
||||
String getName();
|
||||
|
||||
/**
|
||||
* 获取载入插件
|
||||
*
|
||||
* @return {@link Plugin}
|
||||
*/
|
||||
abstract Plugin getPlugin();
|
||||
Plugin getPlugin();
|
||||
|
||||
/**
|
||||
* 是否进行点击事件
|
||||
@ -42,5 +42,5 @@ public abstract interface AbstractSpecialItem {
|
||||
* @param cursorItem 持有物品
|
||||
* @return {@link SpecialItemResult[]}
|
||||
*/
|
||||
abstract SpecialItemResult[] isCorrectClick(Player player, ItemStack currentItem, ItemStack cursorItem);
|
||||
SpecialItemResult[] isCorrectClick(Player player, ItemStack currentItem, ItemStack cursorItem);
|
||||
}
|
||||
|
@ -1,8 +1,9 @@
|
||||
package me.skymc.taboolib.inventory.speciaitem;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import lombok.Getter;
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
@ -12,10 +13,8 @@ import org.bukkit.event.inventory.InventoryClickEvent;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import lombok.Getter;
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
/**
|
||||
* @author sky
|
||||
@ -119,7 +118,7 @@ public class SpecialItem implements Listener {
|
||||
* 载入所有已注册接口
|
||||
*/
|
||||
public void loadItems() {
|
||||
ITEM_DATA.forEach(x -> x.onEnable());
|
||||
ITEM_DATA.forEach(AbstractSpecialItem::onEnable);
|
||||
isLoaded = true;
|
||||
}
|
||||
|
||||
@ -127,7 +126,7 @@ public class SpecialItem implements Listener {
|
||||
* 注销所有已注册接口
|
||||
*/
|
||||
public void unloadItems() {
|
||||
ITEM_DATA.forEach(x -> x.onDisable());
|
||||
ITEM_DATA.forEach(AbstractSpecialItem::onDisable);
|
||||
ITEM_DATA.clear();
|
||||
}
|
||||
|
||||
@ -147,33 +146,32 @@ public class SpecialItem implements Listener {
|
||||
Player player = (Player) e.getWhoClicked();
|
||||
for (AbstractSpecialItem specialitem : ITEM_DATA) {
|
||||
for (SpecialItemResult result : specialitem.isCorrectClick(player, e.getCurrentItem(), e.getCursor())) {
|
||||
if (result == SpecialItemResult.CANCEL) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
else if (result == SpecialItemResult.BREAK) {
|
||||
return;
|
||||
}
|
||||
else if (result == SpecialItemResult.REMOVE_ITEM_CURRENT) {
|
||||
e.setCurrentItem(null);
|
||||
}
|
||||
else if (result == SpecialItemResult.REMOVE_ITEM_CURSOR) {
|
||||
e.getWhoClicked().setItemOnCursor(null);
|
||||
}
|
||||
else if (result == SpecialItemResult.REMOVE_ITEM_CURRENT_AMOUNT_1) {
|
||||
if (e.getCurrentItem().getAmount() > 1) {
|
||||
e.getCurrentItem().setAmount(e.getCurrentItem().getAmount() - 1);
|
||||
}
|
||||
else {
|
||||
e.setCurrentItem(null);
|
||||
}
|
||||
}
|
||||
else if (result == SpecialItemResult.REMOVE_ITEM_CURSOR_AMOUNT_1) {
|
||||
if (e.getCursor().getAmount() > 1) {
|
||||
e.getCursor().setAmount(e.getCursor().getAmount() - 1);
|
||||
}
|
||||
else {
|
||||
e.getWhoClicked().setItemOnCursor(null);
|
||||
}
|
||||
switch (result) {
|
||||
case CANCEL:
|
||||
e.setCancelled(true);
|
||||
break;
|
||||
case BREAK:
|
||||
return;
|
||||
case REMOVE_ITEM_CURRENT:
|
||||
e.setCurrentItem(null);
|
||||
break;
|
||||
case REMOVE_ITEM_CURSOR:
|
||||
e.getWhoClicked().setItemOnCursor(null);
|
||||
break;
|
||||
case REMOVE_ITEM_CURRENT_AMOUNT_1:
|
||||
if (e.getCurrentItem().getAmount() > 1) {
|
||||
e.getCurrentItem().setAmount(e.getCurrentItem().getAmount() - 1);
|
||||
} else {
|
||||
e.setCurrentItem(null);
|
||||
}
|
||||
break;
|
||||
case REMOVE_ITEM_CURSOR_AMOUNT_1:
|
||||
if (e.getCursor().getAmount() > 1) {
|
||||
e.getCursor().setAmount(e.getCursor().getAmount() - 1);
|
||||
} else {
|
||||
e.getWhoClicked().setItemOnCursor(null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -34,6 +34,6 @@ public enum SpecialItemResult {
|
||||
/**
|
||||
* 移除一个鼠标物品
|
||||
*/
|
||||
REMOVE_ITEM_CURSOR_AMOUNT_1;
|
||||
|
||||
REMOVE_ITEM_CURSOR_AMOUNT_1
|
||||
|
||||
}
|
||||
|
@ -1,5 +1,14 @@
|
||||
package me.skymc.taboolib.itemnbtapi;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.itemnbtapi.utils.GsonWrapper;
|
||||
import me.skymc.taboolib.itemnbtapi.utils.MethodNames;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.InputStream;
|
||||
@ -8,16 +17,6 @@ import java.lang.reflect.Method;
|
||||
import java.util.Set;
|
||||
import java.util.Stack;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.itemnbtapi.utils.GsonWrapper;
|
||||
import me.skymc.taboolib.itemnbtapi.utils.MethodNames;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
|
||||
// TODO: finish codestyle cleanup -sgdc3
|
||||
public class NBTReflectionUtil {
|
||||
|
||||
@ -27,8 +26,7 @@ public class NBTReflectionUtil {
|
||||
private static Class getCraftItemStack() {
|
||||
|
||||
try {
|
||||
Class clazz = Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftItemStack");
|
||||
return clazz;
|
||||
return Class.forName("org.bukkit.craftbukkit." + version + ".inventory.CraftItemStack");
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
return null;
|
||||
@ -38,8 +36,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
private static Class getCraftEntity() {
|
||||
try {
|
||||
Class clazz = Class.forName("org.bukkit.craftbukkit." + version + ".entity.CraftEntity");
|
||||
return clazz;
|
||||
return Class.forName("org.bukkit.craftbukkit." + version + ".entity.CraftEntity");
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
return null;
|
||||
@ -49,8 +46,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getNBTBase() {
|
||||
try {
|
||||
Class clazz = Class.forName("net.minecraft.server." + version + ".NBTBase");
|
||||
return clazz;
|
||||
return Class.forName("net.minecraft.server." + version + ".NBTBase");
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
return null;
|
||||
@ -60,8 +56,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getNBTTagString() {
|
||||
try {
|
||||
Class clazz = Class.forName("net.minecraft.server." + version + ".NBTTagString");
|
||||
return clazz;
|
||||
return Class.forName("net.minecraft.server." + version + ".NBTTagString");
|
||||
} catch (Exception ex) {
|
||||
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -72,8 +67,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getNMSItemStack() {
|
||||
try {
|
||||
Class clazz = Class.forName("net.minecraft.server." + version + ".ItemStack");
|
||||
return clazz;
|
||||
return Class.forName("net.minecraft.server." + version + ".ItemStack");
|
||||
} catch (Exception ex) {
|
||||
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -84,8 +78,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getNBTTagCompound() {
|
||||
try {
|
||||
Class clazz = Class.forName("net.minecraft.server." + version + ".NBTTagCompound");
|
||||
return clazz;
|
||||
return Class.forName("net.minecraft.server." + version + ".NBTTagCompound");
|
||||
} catch (Exception ex) {
|
||||
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -96,8 +89,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getNBTCompressedStreamTools() {
|
||||
try {
|
||||
Class clazz = Class.forName("net.minecraft.server." + version + ".NBTCompressedStreamTools");
|
||||
return clazz;
|
||||
return Class.forName("net.minecraft.server." + version + ".NBTCompressedStreamTools");
|
||||
} catch (Exception ex) {
|
||||
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -108,8 +100,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getMojangsonParser() {
|
||||
try {
|
||||
Class c = Class.forName("net.minecraft.server." + version + ".MojangsonParser");
|
||||
return c;
|
||||
return Class.forName("net.minecraft.server." + version + ".MojangsonParser");
|
||||
} catch (Exception ex) {
|
||||
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -120,8 +111,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getTileEntity() {
|
||||
try {
|
||||
Class clazz = Class.forName("net.minecraft.server." + version + ".TileEntity");
|
||||
return clazz;
|
||||
return Class.forName("net.minecraft.server." + version + ".TileEntity");
|
||||
} catch (Exception ex) {
|
||||
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -132,8 +122,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
protected static Class getCraftWorld() {
|
||||
try {
|
||||
Class clazz = Class.forName("org.bukkit.craftbukkit." + version + ".CraftWorld");
|
||||
return clazz;
|
||||
return Class.forName("org.bukkit.craftbukkit." + version + ".CraftWorld");
|
||||
} catch (Exception ex) {
|
||||
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -186,8 +175,7 @@ public class NBTReflectionUtil {
|
||||
Method method;
|
||||
try {
|
||||
method = clazz.getMethod("asNMSCopy", ItemStack.class);
|
||||
Object answer = method.invoke(clazz, item);
|
||||
return answer;
|
||||
return method.invoke(clazz, item);
|
||||
} catch (Exception e) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + e.getMessage());
|
||||
}
|
||||
@ -272,8 +260,7 @@ public class NBTReflectionUtil {
|
||||
Method method;
|
||||
try {
|
||||
method = clazz.getMethod("getTag");
|
||||
Object answer = method.invoke(nmsitem);
|
||||
return answer;
|
||||
return method.invoke(nmsitem);
|
||||
} catch (Exception e) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + e.getMessage());
|
||||
}
|
||||
@ -285,8 +272,7 @@ public class NBTReflectionUtil {
|
||||
@SuppressWarnings("rawtypes")
|
||||
Class clazz = getNMSItemStack();
|
||||
try {
|
||||
Object nmsstack = clazz.getConstructor(getNBTTagCompound()).newInstance(nbtcompound.getCompound());
|
||||
return nmsstack;
|
||||
return clazz.getConstructor(getNBTTagCompound()).newInstance(nbtcompound.getCompound());
|
||||
} catch (Exception e) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + e.getMessage());
|
||||
}
|
||||
@ -379,8 +365,7 @@ public class NBTReflectionUtil {
|
||||
Method method;
|
||||
try {
|
||||
method = c.getMethod("getCompound", String.class);
|
||||
Object answer = method.invoke(compound, name);
|
||||
return answer;
|
||||
return method.invoke(compound, name);
|
||||
} catch (Exception e) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + e.getMessage());
|
||||
}
|
||||
@ -403,11 +388,9 @@ public class NBTReflectionUtil {
|
||||
method = workingtag.getClass().getMethod("set", String.class, getNBTBase());
|
||||
method.invoke(workingtag, name, getNBTTagCompound().newInstance());
|
||||
comp.setCompound(nbttag);
|
||||
return;
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public static Boolean valideCompound(NBTCompound comp) {
|
||||
@ -562,7 +545,6 @@ public class NBTReflectionUtil {
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
public static byte[] getByteArray(NBTCompound comp, String key) {
|
||||
@ -634,7 +616,7 @@ public class NBTReflectionUtil {
|
||||
Method method;
|
||||
try {
|
||||
method = workingtag.getClass().getMethod("setFloat", String.class, float.class);
|
||||
method.invoke(workingtag, key, (float) f);
|
||||
method.invoke(workingtag, key, f);
|
||||
comp.setCompound(rootnbttag);
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -672,7 +654,7 @@ public class NBTReflectionUtil {
|
||||
Method method;
|
||||
try {
|
||||
method = workingtag.getClass().getMethod("setLong", String.class, long.class);
|
||||
method.invoke(workingtag, key, (long) f);
|
||||
method.invoke(workingtag, key, f);
|
||||
comp.setCompound(rootnbttag);
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -710,7 +692,7 @@ public class NBTReflectionUtil {
|
||||
Method method;
|
||||
try {
|
||||
method = workingtag.getClass().getMethod("setShort", String.class, short.class);
|
||||
method.invoke(workingtag, key, (short) f);
|
||||
method.invoke(workingtag, key, f);
|
||||
comp.setCompound(rootnbttag);
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
@ -748,7 +730,7 @@ public class NBTReflectionUtil {
|
||||
Method method;
|
||||
try {
|
||||
method = workingtag.getClass().getMethod("setByte", String.class, byte.class);
|
||||
method.invoke(workingtag, key, (byte) f);
|
||||
method.invoke(workingtag, key, f);
|
||||
comp.setCompound(rootnbttag);
|
||||
} catch (Exception ex) {
|
||||
MsgUtils.warn("NBT 操作出现异常: §7" + ex.getMessage());
|
||||
|
@ -1,16 +1,14 @@
|
||||
package me.skymc.taboolib.javascript;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
import me.skymc.taboolib.Main;
|
||||
|
||||
import javax.script.Invocable;
|
||||
import javax.script.ScriptEngine;
|
||||
import javax.script.ScriptEngineManager;
|
||||
import javax.script.ScriptException;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import java.io.File;
|
||||
import java.io.FileReader;
|
||||
import java.io.IOException;
|
||||
|
||||
public class JavaScriptUtils {
|
||||
|
||||
@ -51,13 +49,7 @@ public class JavaScriptUtils {
|
||||
}
|
||||
|
||||
reader.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ScriptException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
} catch (NoSuchMethodException | IOException | ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
@ -76,13 +68,7 @@ public class JavaScriptUtils {
|
||||
}
|
||||
|
||||
reader.close();
|
||||
} catch (FileNotFoundException e) {
|
||||
e.printStackTrace();
|
||||
} catch (ScriptException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
} catch (NoSuchMethodException | IOException | ScriptException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,10 @@
|
||||
package me.skymc.taboolib.javashell;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.FilenameFilter;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.HashMap;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.javashell.utils.JarUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.apache.commons.lang.ArrayUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.HandlerList;
|
||||
@ -14,11 +12,11 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.RegisteredListener;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.javashell.utils.JarUtils;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import java.io.File;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class JavaShell {
|
||||
|
||||
@ -50,18 +48,10 @@ public class JavaShell {
|
||||
File dataFolder = Main.getInst().getDataFolder();
|
||||
File pluginsFolder = dataFolder.getParentFile();
|
||||
File serverRoot = Bukkit.getWorldContainer();
|
||||
|
||||
File[] rootJars = serverRoot.listFiles(new FilenameFilter() {
|
||||
public boolean accept(File dir, String name) {
|
||||
return name.toLowerCase().endsWith("jar");
|
||||
}
|
||||
});
|
||||
|
||||
File[] pluginJars = pluginsFolder.listFiles(new FilenameFilter() {
|
||||
public boolean accept(File dir, String name) {
|
||||
return name.toLowerCase().endsWith("jar");
|
||||
}
|
||||
});
|
||||
|
||||
File[] rootJars = serverRoot.listFiles((dir, name) -> name.toLowerCase().endsWith("jar"));
|
||||
|
||||
File[] pluginJars = pluginsFolder.listFiles((dir, name) -> name.toLowerCase().endsWith("jar"));
|
||||
|
||||
for (File file : (File[]) ArrayUtils.addAll(rootJars, pluginJars)) {
|
||||
String path = file.getAbsolutePath();
|
||||
@ -123,7 +113,7 @@ public class JavaShell {
|
||||
if (shells.containsKey(name)) {
|
||||
Class<?> clazz = shells.get(name);
|
||||
try {
|
||||
Method disableMethod = clazz.getMethod(method, new Class[0]);
|
||||
Method disableMethod = clazz.getMethod(method);
|
||||
if (disableMethod != null) {
|
||||
disableMethod.invoke(clazz.newInstance());
|
||||
}
|
||||
|
@ -1,12 +1,9 @@
|
||||
package me.skymc.taboolib.javashell.utils;
|
||||
|
||||
import java.io.BufferedInputStream;
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.io.*;
|
||||
import java.lang.reflect.Method;
|
||||
import java.net.URL;
|
||||
import java.net.URLClassLoader;
|
||||
@ -15,10 +12,6 @@ import java.util.Enumeration;
|
||||
import java.util.jar.JarEntry;
|
||||
import java.util.jar.JarFile;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
|
||||
public class JarUtils {
|
||||
|
||||
public static boolean extractFromJar(final String fileName, final String dest) throws IOException {
|
||||
@ -51,7 +44,7 @@ public class JarUtils {
|
||||
return false;
|
||||
}
|
||||
|
||||
private final static void copyInputStream(final InputStream in, final OutputStream out) throws IOException {
|
||||
private static void copyInputStream(final InputStream in, final OutputStream out) throws IOException {
|
||||
try {
|
||||
final byte[] buff = new byte[4096];
|
||||
int n;
|
||||
@ -88,13 +81,13 @@ public class JarUtils {
|
||||
}
|
||||
}
|
||||
|
||||
public static void addClassPath(final URL url) throws IOException {
|
||||
public static void addClassPath(final URL url) {
|
||||
final URLClassLoader sysloader = (URLClassLoader) Bukkit.class.getClassLoader();
|
||||
final Class<URLClassLoader> sysclass = URLClassLoader.class;
|
||||
try {
|
||||
final Method method = sysclass.getDeclaredMethod("addURL", new Class[] { URL.class });
|
||||
final Method method = sysclass.getDeclaredMethod("addURL", URL.class);
|
||||
method.setAccessible(true);
|
||||
method.invoke(sysloader, new Object[] { url });
|
||||
method.invoke(sysloader, url);
|
||||
} catch (Throwable t) {
|
||||
MsgUtils.warn("无法添加添加 &4" + url + "&c 到运行库");
|
||||
MsgUtils.warn(t.getMessage());
|
||||
|
@ -69,7 +69,7 @@ public class CDL {
|
||||
}
|
||||
|
||||
public static String rowToString(JSONArray ja) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < ja.length(); i += 1) {
|
||||
if (i > 0) {
|
||||
sb.append(',');
|
||||
@ -146,7 +146,7 @@ public class CDL {
|
||||
if (names == null || names.length() == 0) {
|
||||
return null;
|
||||
}
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < ja.length(); i += 1) {
|
||||
JSONObject jo = ja.optJSONObject(i);
|
||||
if (jo != null) {
|
||||
|
@ -5,7 +5,7 @@ public class Cookie {
|
||||
public static String escape(String string) {
|
||||
char c;
|
||||
String s = string.trim();
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int length = s.length();
|
||||
for (int i = 0; i < length; i += 1) {
|
||||
c = s.charAt(i);
|
||||
@ -47,7 +47,7 @@ public class Cookie {
|
||||
}
|
||||
|
||||
public static String toString(JSONObject jo) throws JSONException {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
sb.append(escape(jo.getString("name")));
|
||||
sb.append("=");
|
||||
@ -72,7 +72,7 @@ public class Cookie {
|
||||
|
||||
public static String unescape(String string) {
|
||||
int length = string.length();
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0; i < length; ++i) {
|
||||
char c = string.charAt(i);
|
||||
if (c == '+') {
|
||||
|
@ -21,7 +21,7 @@ public class CookieList {
|
||||
boolean b = false;
|
||||
Iterator keys = jo.keys();
|
||||
String string;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (keys.hasNext()) {
|
||||
string = keys.next().toString();
|
||||
if (!jo.isNull(string)) {
|
||||
|
@ -35,7 +35,7 @@ public class HTTP {
|
||||
public static String toString(JSONObject jo) throws JSONException {
|
||||
Iterator keys = jo.keys();
|
||||
String string;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
if (jo.has("Status-Code") && jo.has("Reason-Phrase")) {
|
||||
sb.append(jo.getString("HTTP-Version"));
|
||||
sb.append(' ');
|
||||
|
@ -9,7 +9,7 @@ public class HTTPTokener extends JSONTokener {
|
||||
public String nextToken() throws JSONException {
|
||||
char c;
|
||||
char q;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
do {
|
||||
c = next();
|
||||
} while (Character.isWhitespace(c));
|
||||
|
@ -6,7 +6,6 @@ import java.io.Writer;
|
||||
import java.lang.reflect.Array;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
@ -57,9 +56,8 @@ public class JSONArray {
|
||||
public JSONArray(Collection collection) {
|
||||
this.myArrayList = new ArrayList();
|
||||
if (collection != null) {
|
||||
Iterator iter = collection.iterator();
|
||||
while (iter.hasNext()) {
|
||||
this.myArrayList.add(JSONObject.wrap(iter.next()));
|
||||
for (Object aCollection : collection) {
|
||||
this.myArrayList.add(JSONObject.wrap(aCollection));
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -166,7 +164,7 @@ public class JSONArray {
|
||||
|
||||
public String join(String separator) throws JSONException {
|
||||
int len = this.length();
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
|
||||
for (int i = 0; i < len; i += 1) {
|
||||
if (i > 0) {
|
||||
@ -267,7 +265,7 @@ public class JSONArray {
|
||||
}
|
||||
|
||||
public JSONArray put(double value) throws JSONException {
|
||||
Double d = new Double(value);
|
||||
Double d = value;
|
||||
JSONObject.testValidity(d);
|
||||
this.put(d);
|
||||
return this;
|
||||
|
@ -40,33 +40,37 @@ public class JSONML {
|
||||
return token;
|
||||
} else if (token == XML.BANG) {
|
||||
c = x.next();
|
||||
if (c == '-') {
|
||||
if (x.next() == '-') {
|
||||
x.skipPast("-->");
|
||||
} else {
|
||||
x.back();
|
||||
}
|
||||
} else if (c == '[') {
|
||||
token = x.nextToken();
|
||||
if (token.equals("CDATA") && x.next() == '[') {
|
||||
if (ja != null) {
|
||||
ja.put(x.nextCDATA());
|
||||
switch (c) {
|
||||
case '-':
|
||||
if (x.next() == '-') {
|
||||
x.skipPast("-->");
|
||||
} else {
|
||||
x.back();
|
||||
}
|
||||
} else {
|
||||
throw x.syntaxError("Expected 'CDATA['");
|
||||
}
|
||||
} else {
|
||||
i = 1;
|
||||
do {
|
||||
token = x.nextMeta();
|
||||
if (token == null) {
|
||||
throw x.syntaxError("Missing '>' after '<!'.");
|
||||
} else if (token == XML.LT) {
|
||||
i += 1;
|
||||
} else if (token == XML.GT) {
|
||||
i -= 1;
|
||||
break;
|
||||
case '[':
|
||||
token = x.nextToken();
|
||||
if (token.equals("CDATA") && x.next() == '[') {
|
||||
if (ja != null) {
|
||||
ja.put(x.nextCDATA());
|
||||
}
|
||||
} else {
|
||||
throw x.syntaxError("Expected 'CDATA['");
|
||||
}
|
||||
} while (i > 0);
|
||||
break;
|
||||
default:
|
||||
i = 1;
|
||||
do {
|
||||
token = x.nextMeta();
|
||||
if (token == null) {
|
||||
throw x.syntaxError("Missing '>' after '<!'.");
|
||||
} else if (token == XML.LT) {
|
||||
i += 1;
|
||||
} else if (token == XML.GT) {
|
||||
i -= 1;
|
||||
}
|
||||
} while (i > 0);
|
||||
break;
|
||||
}
|
||||
} else if (token == XML.QUEST) {
|
||||
x.skipPast("?>");
|
||||
@ -189,7 +193,7 @@ public class JSONML {
|
||||
Iterator keys;
|
||||
int length;
|
||||
Object object;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String tagName;
|
||||
String value;
|
||||
tagName = ja.getString(0);
|
||||
@ -247,7 +251,7 @@ public class JSONML {
|
||||
}
|
||||
|
||||
public static String toString(JSONObject jo) throws JSONException {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int i;
|
||||
JSONArray ja;
|
||||
String key;
|
||||
|
@ -6,13 +6,7 @@ import java.io.Writer;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.Collection;
|
||||
import java.util.Enumeration;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Locale;
|
||||
import java.util.Map;
|
||||
import java.util.ResourceBundle;
|
||||
import java.util.*;
|
||||
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
public class JSONObject {
|
||||
@ -42,9 +36,9 @@ public class JSONObject {
|
||||
|
||||
public JSONObject(JSONObject jo, String[] names) {
|
||||
this();
|
||||
for (int i = 0; i < names.length; i += 1) {
|
||||
for (String name : names) {
|
||||
try {
|
||||
this.putOnce(names[i], jo.opt(names[i]));
|
||||
this.putOnce(name, jo.opt(name));
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
}
|
||||
@ -97,9 +91,8 @@ public class JSONObject {
|
||||
public JSONObject(Map map) {
|
||||
this.map = new HashMap();
|
||||
if (map != null) {
|
||||
Iterator i = map.entrySet().iterator();
|
||||
while (i.hasNext()) {
|
||||
Map.Entry e = (Map.Entry)i.next();
|
||||
for (Object o : map.entrySet()) {
|
||||
Map.Entry e = (Map.Entry) o;
|
||||
Object value = e.getValue();
|
||||
if (value != null) {
|
||||
this.map.put(e.getKey(), wrap(value));
|
||||
@ -116,8 +109,7 @@ public class JSONObject {
|
||||
public JSONObject(Object object, String names[]) {
|
||||
this();
|
||||
Class c = object.getClass();
|
||||
for (int i = 0; i < names.length; i += 1) {
|
||||
String name = names[i];
|
||||
for (String name : names) {
|
||||
try {
|
||||
this.putOpt(name, c.getField(name).get(object));
|
||||
} catch (Exception ignore) {
|
||||
@ -329,22 +321,41 @@ public class JSONObject {
|
||||
return this.map.containsKey(key);
|
||||
}
|
||||
|
||||
public JSONObject increment(String key) throws JSONException {
|
||||
Object value = this.opt(key);
|
||||
if (value == null) {
|
||||
this.put(key, 1);
|
||||
} else if (value instanceof Integer) {
|
||||
this.put(key, ((Integer)value).intValue() + 1);
|
||||
} else if (value instanceof Long) {
|
||||
this.put(key, ((Long)value).longValue() + 1);
|
||||
} else if (value instanceof Double) {
|
||||
this.put(key, ((Double)value).doubleValue() + 1);
|
||||
} else if (value instanceof Float) {
|
||||
this.put(key, ((Float)value).floatValue() + 1);
|
||||
} else {
|
||||
throw new JSONException("Unable to increment [" + quote(key) + "].");
|
||||
public static Object stringToValue(String string) {
|
||||
Double d;
|
||||
if (string.equals("")) {
|
||||
return string;
|
||||
}
|
||||
return this;
|
||||
if (string.equalsIgnoreCase("true")) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
if (string.equalsIgnoreCase("false")) {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
if (string.equalsIgnoreCase("null")) {
|
||||
return JSONObject.NULL;
|
||||
}
|
||||
char b = string.charAt(0);
|
||||
if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+') {
|
||||
try {
|
||||
if (string.indexOf('.') > -1 ||
|
||||
string.indexOf('e') > -1 || string.indexOf('E') > -1) {
|
||||
d = Double.valueOf(string);
|
||||
if (!d.isInfinite() && !d.isNaN()) {
|
||||
return d;
|
||||
}
|
||||
} else {
|
||||
Long myLong = new Long(string);
|
||||
if (myLong == myLong.intValue()) {
|
||||
return myLong.intValue();
|
||||
} else {
|
||||
return myLong;
|
||||
}
|
||||
}
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
}
|
||||
return string;
|
||||
}
|
||||
|
||||
public boolean isNull(String key) {
|
||||
@ -458,49 +469,39 @@ public class JSONObject {
|
||||
return NULL.equals(object) ? defaultValue : object.toString();
|
||||
}
|
||||
|
||||
|
||||
private void populateMap(Object bean) {
|
||||
Class klass = bean.getClass();
|
||||
boolean includeSuperClass = klass.getClassLoader() != null;
|
||||
|
||||
Method[] methods = includeSuperClass
|
||||
? klass.getMethods()
|
||||
: klass.getDeclaredMethods();
|
||||
for (int i = 0; i < methods.length; i += 1) {
|
||||
try {
|
||||
Method method = methods[i];
|
||||
if (Modifier.isPublic(method.getModifiers())) {
|
||||
String name = method.getName();
|
||||
String key = "";
|
||||
if (name.startsWith("get")) {
|
||||
if ("getClass".equals(name) ||
|
||||
"getDeclaringClass".equals(name)) {
|
||||
key = "";
|
||||
} else {
|
||||
key = name.substring(3);
|
||||
}
|
||||
} else if (name.startsWith("is")) {
|
||||
key = name.substring(2);
|
||||
}
|
||||
if (key.length() > 0 &&
|
||||
Character.isUpperCase(key.charAt(0)) &&
|
||||
method.getParameterTypes().length == 0) {
|
||||
if (key.length() == 1) {
|
||||
key = key.toLowerCase();
|
||||
} else if (!Character.isUpperCase(key.charAt(1))) {
|
||||
key = key.substring(0, 1).toLowerCase() +
|
||||
key.substring(1);
|
||||
}
|
||||
|
||||
Object result = method.invoke(bean, (Object[])null);
|
||||
if (result != null) {
|
||||
this.map.put(key, wrap(result));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
public static String valueToString(Object value) throws JSONException {
|
||||
if (value == null || value == null) {
|
||||
return "null";
|
||||
}
|
||||
if (value instanceof JSONString) {
|
||||
Object object;
|
||||
try {
|
||||
object = ((JSONString) value).toJSONString();
|
||||
} catch (Exception e) {
|
||||
throw new JSONException(e);
|
||||
}
|
||||
if (object instanceof String) {
|
||||
return (String) object;
|
||||
}
|
||||
throw new JSONException("Bad value from toJSONString: " + object);
|
||||
}
|
||||
if (value instanceof Number) {
|
||||
return numberToString((Number) value);
|
||||
}
|
||||
if (value instanceof Boolean || value instanceof JSONObject ||
|
||||
value instanceof JSONArray) {
|
||||
return value.toString();
|
||||
}
|
||||
if (value instanceof Map) {
|
||||
return new JSONObject((Map) value).toString();
|
||||
}
|
||||
if (value instanceof Collection) {
|
||||
return new JSONArray((Collection) value).toString();
|
||||
}
|
||||
if (value.getClass().isArray()) {
|
||||
return new JSONArray(value).toString();
|
||||
}
|
||||
return quote(value.toString());
|
||||
}
|
||||
|
||||
public JSONObject put(String key, boolean value) throws JSONException {
|
||||
@ -635,41 +636,37 @@ public class JSONObject {
|
||||
return this.map.remove(key);
|
||||
}
|
||||
|
||||
public static Object stringToValue(String string) {
|
||||
Double d;
|
||||
if (string.equals("")) {
|
||||
return string;
|
||||
}
|
||||
if (string.equalsIgnoreCase("true")) {
|
||||
return Boolean.TRUE;
|
||||
}
|
||||
if (string.equalsIgnoreCase("false")) {
|
||||
return Boolean.FALSE;
|
||||
}
|
||||
if (string.equalsIgnoreCase("null")) {
|
||||
return JSONObject.NULL;
|
||||
}
|
||||
char b = string.charAt(0);
|
||||
if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+') {
|
||||
static Writer writeValue(Writer writer, Object value,
|
||||
int indentFactor, int indent) throws JSONException, IOException {
|
||||
if (value == null || value == null) {
|
||||
writer.write("null");
|
||||
} else if (value instanceof JSONObject) {
|
||||
((JSONObject) value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof JSONArray) {
|
||||
((JSONArray) value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof Map) {
|
||||
new JSONObject((Map) value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof Collection) {
|
||||
new JSONArray((Collection) value).write(writer, indentFactor,
|
||||
indent);
|
||||
} else if (value.getClass().isArray()) {
|
||||
new JSONArray(value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof Number) {
|
||||
writer.write(numberToString((Number) value));
|
||||
} else if (value instanceof Boolean) {
|
||||
writer.write(value.toString());
|
||||
} else if (value instanceof JSONString) {
|
||||
Object o;
|
||||
try {
|
||||
if (string.indexOf('.') > -1 ||
|
||||
string.indexOf('e') > -1 || string.indexOf('E') > -1) {
|
||||
d = Double.valueOf(string);
|
||||
if (!d.isInfinite() && !d.isNaN()) {
|
||||
return d;
|
||||
}
|
||||
} else {
|
||||
Long myLong = new Long(string);
|
||||
if (myLong.longValue() == myLong.intValue()) {
|
||||
return new Integer(myLong.intValue());
|
||||
} else {
|
||||
return myLong;
|
||||
}
|
||||
}
|
||||
} catch (Exception ignore) {
|
||||
o = ((JSONString) value).toJSONString();
|
||||
} catch (Exception e) {
|
||||
throw new JSONException(e);
|
||||
}
|
||||
writer.write(o != null ? o.toString() : quote(value.toString()));
|
||||
} else {
|
||||
quote(value.toString(), writer);
|
||||
}
|
||||
return string;
|
||||
return writer;
|
||||
}
|
||||
|
||||
public static void testValidity(Object o) throws JSONException {
|
||||
@ -714,39 +711,10 @@ public class JSONObject {
|
||||
}
|
||||
}
|
||||
|
||||
public static String valueToString(Object value) throws JSONException {
|
||||
if (value == null || value.equals(null)) {
|
||||
return "null";
|
||||
static void indent(Writer writer, int indent) throws IOException {
|
||||
for (int i = 0; i < indent; i += 1) {
|
||||
writer.write(' ');
|
||||
}
|
||||
if (value instanceof JSONString) {
|
||||
Object object;
|
||||
try {
|
||||
object = ((JSONString)value).toJSONString();
|
||||
} catch (Exception e) {
|
||||
throw new JSONException(e);
|
||||
}
|
||||
if (object instanceof String) {
|
||||
return (String)object;
|
||||
}
|
||||
throw new JSONException("Bad value from toJSONString: " + object);
|
||||
}
|
||||
if (value instanceof Number) {
|
||||
return numberToString((Number) value);
|
||||
}
|
||||
if (value instanceof Boolean || value instanceof JSONObject ||
|
||||
value instanceof JSONArray) {
|
||||
return value.toString();
|
||||
}
|
||||
if (value instanceof Map) {
|
||||
return new JSONObject((Map)value).toString();
|
||||
}
|
||||
if (value instanceof Collection) {
|
||||
return new JSONArray((Collection)value).toString();
|
||||
}
|
||||
if (value.getClass().isArray()) {
|
||||
return new JSONArray(value).toString();
|
||||
}
|
||||
return quote(value.toString());
|
||||
}
|
||||
|
||||
public static Object wrap(Object object) {
|
||||
@ -794,43 +762,65 @@ public class JSONObject {
|
||||
return this.write(writer, 0, 0);
|
||||
}
|
||||
|
||||
|
||||
static final Writer writeValue(Writer writer, Object value,
|
||||
int indentFactor, int indent) throws JSONException, IOException {
|
||||
if (value == null || value.equals(null)) {
|
||||
writer.write("null");
|
||||
} else if (value instanceof JSONObject) {
|
||||
((JSONObject) value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof JSONArray) {
|
||||
((JSONArray) value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof Map) {
|
||||
new JSONObject((Map) value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof Collection) {
|
||||
new JSONArray((Collection) value).write(writer, indentFactor,
|
||||
indent);
|
||||
} else if (value.getClass().isArray()) {
|
||||
new JSONArray(value).write(writer, indentFactor, indent);
|
||||
} else if (value instanceof Number) {
|
||||
writer.write(numberToString((Number) value));
|
||||
} else if (value instanceof Boolean) {
|
||||
writer.write(value.toString());
|
||||
} else if (value instanceof JSONString) {
|
||||
Object o;
|
||||
try {
|
||||
o = ((JSONString) value).toJSONString();
|
||||
} catch (Exception e) {
|
||||
throw new JSONException(e);
|
||||
}
|
||||
writer.write(o != null ? o.toString() : quote(value.toString()));
|
||||
public JSONObject increment(String key) throws JSONException {
|
||||
Object value = this.opt(key);
|
||||
if (value == null) {
|
||||
this.put(key, 1);
|
||||
} else if (value instanceof Integer) {
|
||||
this.put(key, (Integer) value + 1);
|
||||
} else if (value instanceof Long) {
|
||||
this.put(key, (Long) value + 1);
|
||||
} else if (value instanceof Double) {
|
||||
this.put(key, (Double) value + 1);
|
||||
} else if (value instanceof Float) {
|
||||
this.put(key, (Float) value + 1);
|
||||
} else {
|
||||
quote(value.toString(), writer);
|
||||
throw new JSONException("Unable to increment [" + quote(key) + "].");
|
||||
}
|
||||
return writer;
|
||||
return this;
|
||||
}
|
||||
|
||||
static final void indent(Writer writer, int indent) throws IOException {
|
||||
for (int i = 0; i < indent; i += 1) {
|
||||
writer.write(' ');
|
||||
private void populateMap(Object bean) {
|
||||
Class klass = bean.getClass();
|
||||
boolean includeSuperClass = klass.getClassLoader() != null;
|
||||
|
||||
Method[] methods = includeSuperClass
|
||||
? klass.getMethods()
|
||||
: klass.getDeclaredMethods();
|
||||
for (Method method1 : methods) {
|
||||
try {
|
||||
Method method = method1;
|
||||
if (Modifier.isPublic(method.getModifiers())) {
|
||||
String name = method.getName();
|
||||
String key = "";
|
||||
if (name.startsWith("get")) {
|
||||
if ("getClass".equals(name) ||
|
||||
"getDeclaringClass".equals(name)) {
|
||||
key = "";
|
||||
} else {
|
||||
key = name.substring(3);
|
||||
}
|
||||
} else if (name.startsWith("is")) {
|
||||
key = name.substring(2);
|
||||
}
|
||||
if (key.length() > 0 &&
|
||||
Character.isUpperCase(key.charAt(0)) &&
|
||||
method.getParameterTypes().length == 0) {
|
||||
if (key.length() == 1) {
|
||||
key = key.toLowerCase();
|
||||
} else if (!Character.isUpperCase(key.charAt(1))) {
|
||||
key = key.substring(0, 1).toLowerCase() +
|
||||
key.substring(1);
|
||||
}
|
||||
|
||||
Object result = method.invoke(bean, (Object[]) null);
|
||||
if (result != null) {
|
||||
this.map.put(key, wrap(result));
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (Exception ignore) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -2,5 +2,5 @@ package me.skymc.taboolib.json;
|
||||
|
||||
public interface JSONString {
|
||||
|
||||
public String toJSONString();
|
||||
String toJSONString();
|
||||
}
|
||||
|
@ -1,12 +1,7 @@
|
||||
package me.skymc.taboolib.json;
|
||||
|
||||
|
||||
import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.Reader;
|
||||
import java.io.StringReader;
|
||||
import java.io.*;
|
||||
|
||||
public class JSONTokener {
|
||||
|
||||
@ -30,7 +25,7 @@ public class JSONTokener {
|
||||
this.line = 1;
|
||||
}
|
||||
|
||||
public JSONTokener(InputStream inputStream) throws JSONException {
|
||||
public JSONTokener(InputStream inputStream) {
|
||||
this(new InputStreamReader(inputStream));
|
||||
}
|
||||
|
||||
@ -143,7 +138,7 @@ public class JSONTokener {
|
||||
|
||||
public String nextString(char quote) throws JSONException {
|
||||
char c;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (;;) {
|
||||
c = this.next();
|
||||
switch (c) {
|
||||
@ -192,7 +187,7 @@ public class JSONTokener {
|
||||
}
|
||||
|
||||
public String nextTo(char delimiter) throws JSONException {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (;;) {
|
||||
char c = this.next();
|
||||
if (c == delimiter || c == 0 || c == '\n' || c == '\r') {
|
||||
@ -207,7 +202,7 @@ public class JSONTokener {
|
||||
|
||||
public String nextTo(String delimiters) throws JSONException {
|
||||
char c;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (;;) {
|
||||
c = this.next();
|
||||
if (delimiters.indexOf(c) >= 0 || c == 0 ||
|
||||
@ -237,7 +232,7 @@ public class JSONTokener {
|
||||
return new JSONArray(this);
|
||||
}
|
||||
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
while (c >= ' ' && ",:]}/\\\"[{;=#".indexOf(c) < 0) {
|
||||
sb.append(c);
|
||||
c = this.next();
|
||||
|
@ -6,26 +6,26 @@ import java.util.Iterator;
|
||||
@SuppressWarnings({"rawtypes"})
|
||||
public class XML {
|
||||
|
||||
public static final Character AMP = new Character('&');
|
||||
public static final Character AMP = '&';
|
||||
|
||||
public static final Character APOS = new Character('\'');
|
||||
public static final Character APOS = '\'';
|
||||
|
||||
public static final Character BANG = new Character('!');
|
||||
public static final Character BANG = '!';
|
||||
|
||||
public static final Character EQ = new Character('=');
|
||||
public static final Character EQ = '=';
|
||||
|
||||
public static final Character GT = new Character('>');
|
||||
public static final Character GT = '>';
|
||||
|
||||
public static final Character LT = new Character('<');
|
||||
public static final Character LT = '<';
|
||||
|
||||
public static final Character QUEST = new Character('?');
|
||||
public static final Character QUEST = '?';
|
||||
|
||||
public static final Character QUOT = new Character('"');
|
||||
public static final Character QUOT = '"';
|
||||
|
||||
public static final Character SLASH = new Character('/');
|
||||
public static final Character SLASH = '/';
|
||||
|
||||
public static String escape(String string) {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0, length = string.length(); i < length; i++) {
|
||||
char c = string.charAt(i);
|
||||
switch (c) {
|
||||
@ -206,7 +206,7 @@ public class XML {
|
||||
return JSONObject.NULL;
|
||||
}
|
||||
if ("0".equals(string)) {
|
||||
return new Integer(0);
|
||||
return 0;
|
||||
}
|
||||
try {
|
||||
char initial = string.charAt(0);
|
||||
@ -223,8 +223,8 @@ public class XML {
|
||||
return Double.valueOf(string);
|
||||
} else if (string.indexOf('e') < 0 && string.indexOf('E') < 0) {
|
||||
Long myLong = new Long(string);
|
||||
if (myLong.longValue() == myLong.intValue()) {
|
||||
return new Integer(myLong.intValue());
|
||||
if (myLong == myLong.intValue()) {
|
||||
return myLong.intValue();
|
||||
} else {
|
||||
return myLong;
|
||||
}
|
||||
@ -250,7 +250,7 @@ public class XML {
|
||||
|
||||
public static String toString(Object object, String tagName)
|
||||
throws JSONException {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
int i;
|
||||
JSONArray ja;
|
||||
JSONObject jo;
|
||||
|
@ -21,7 +21,7 @@ public class XMLTokener extends JSONTokener {
|
||||
public String nextCDATA() throws JSONException {
|
||||
char c;
|
||||
int i;
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (;;) {
|
||||
c = next();
|
||||
if (end()) {
|
||||
@ -65,7 +65,7 @@ public class XMLTokener extends JSONTokener {
|
||||
}
|
||||
|
||||
public Object nextEntity(char ampersand) throws JSONException {
|
||||
StringBuffer sb = new StringBuffer();
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (;;) {
|
||||
char c = next();
|
||||
if (Character.isLetterOrDigit(c) || c == '#') {
|
||||
|
@ -1,27 +1,26 @@
|
||||
package me.skymc.taboolib.jsonformatter;
|
||||
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.jsonformatter.click.ClickEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.HoverEvent;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.jsonformatter.click.ClickEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.HoverEvent;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
|
||||
public class JSONFormatter {
|
||||
|
||||
private JSONArray ja = new JSONArray();
|
||||
private Builder builder = new Builder();
|
||||
private String color = "";
|
||||
private List<JSONArray> all = new ArrayList<JSONArray>();
|
||||
private List<JSONArray> all = new ArrayList<>();
|
||||
private boolean newline = true;
|
||||
|
||||
public JSONFormatter(){
|
||||
@ -102,7 +101,7 @@ public class JSONFormatter {
|
||||
}
|
||||
|
||||
public List<String> toJSONList(){
|
||||
List<String> list = new ArrayList<String>();
|
||||
List<String> list = new ArrayList<>();
|
||||
try{
|
||||
for(JSONArray ja : all){
|
||||
JSONObject jo = new JSONObject();
|
||||
@ -133,7 +132,7 @@ public class JSONFormatter {
|
||||
}
|
||||
|
||||
public List<Object> toSerializedList(){
|
||||
List<Object> list = new ArrayList<Object>();
|
||||
List<Object> list = new ArrayList<>();
|
||||
try{
|
||||
for(String s : toJSONList()){
|
||||
list.add(a.invoke(null, s));
|
||||
@ -255,19 +254,19 @@ public class JSONFormatter {
|
||||
public Object getPacket(){
|
||||
try{
|
||||
return ppocc.newInstance(toSerialized());
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public List<Object> getPacketList(){
|
||||
List<Object> list = new ArrayList<Object>();
|
||||
List<Object> list = new ArrayList<>();
|
||||
try{
|
||||
for(Object o : toSerializedList()){
|
||||
list.add(ppocc.newInstance(o));
|
||||
}
|
||||
return list;
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -382,7 +381,7 @@ public class JSONFormatter {
|
||||
public JSONObject toString(String color){
|
||||
return toString(color, new BuilderHelper(){
|
||||
@Override
|
||||
public void add(JSONObject jo) throws Exception{
|
||||
public void add(JSONObject jo) {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -1,20 +1,17 @@
|
||||
package me.skymc.taboolib.jsonformatter.hover;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.nms.item.DabItemUtils;
|
||||
import me.skymc.taboolib.nms.item.IDabItemUtils;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class ShowItemEvent extends HoverEvent{
|
||||
|
||||
@ -35,17 +32,17 @@ public class ShowItemEvent extends HoverEvent{
|
||||
StringBuilder tag = new StringBuilder();
|
||||
Object itemTag = getItemTag(is);
|
||||
if (itemTag != null) {
|
||||
tag.append(",tag:" + itemTag);
|
||||
tag.append(",tag:").append(itemTag);
|
||||
}
|
||||
else {
|
||||
ItemMeta im = is.getItemMeta();
|
||||
List<String> lore = im.hasLore() ? im.getLore() : new ArrayList<>();
|
||||
Map<Enchantment, Integer> enchants = is.getItemMeta().getEnchants();
|
||||
tag.append(",tag:{display:{Name:" + (enchants.size() > 0 ? "§b§o" : "§f") + ItemUtils.getCustomName(is));
|
||||
tag.append(",tag:{display:{Name:").append(enchants.size() > 0 ? "§b§o" : "§f").append(ItemUtils.getCustomName(is));
|
||||
if (lore.size() > 0) {
|
||||
tag.append(",Lore:[");
|
||||
for (String s : lore){
|
||||
tag.append("\"" + s + "\",");
|
||||
tag.append("\"").append(s).append("\",");
|
||||
}
|
||||
tag.delete(tag.length() - 1, tag.length());
|
||||
tag.append("]");
|
||||
@ -57,7 +54,7 @@ public class ShowItemEvent extends HoverEvent{
|
||||
}
|
||||
tag.append("ench:[");
|
||||
for (Entry<Enchantment, Integer> e : enchants.entrySet()) {
|
||||
tag.append("{id:" + e.getKey().getId() + ",lvl:" + e.getValue() + "},");
|
||||
tag.append("{id:").append(e.getKey().getId()).append(",lvl:").append(e.getValue()).append("},");
|
||||
}
|
||||
tag.delete(tag.length() - 1, tag.length());
|
||||
tag.append("]");
|
||||
|
@ -1,26 +1,17 @@
|
||||
package me.skymc.taboolib.listener;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.server.ServerCommandEvent;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.TabooLib;
|
||||
import me.skymc.taboolib.database.PlayerDataManager;
|
||||
import me.skymc.taboolib.inventory.ItemUtils;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTCompound;
|
||||
import me.skymc.taboolib.itemnbtapi.NBTItem;
|
||||
import me.skymc.taboolib.jsonformatter.JSONFormatter;
|
||||
import me.skymc.taboolib.jsonformatter.click.RunCommandEvent;
|
||||
import me.skymc.taboolib.jsonformatter.click.SuggestCommandEvent;
|
||||
import me.skymc.taboolib.jsonformatter.hover.ShowTextEvent;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.permission.PermissionUtils;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.event.server.ServerCommandEvent;
|
||||
|
||||
public class ListenerPlayerCommand implements Listener {
|
||||
|
||||
@ -30,7 +21,7 @@ public class ListenerPlayerCommand implements Listener {
|
||||
if (TabooLib.getVerint() > 10700) {
|
||||
e.setCancelled(true);
|
||||
}
|
||||
Bukkit.getScheduler().runTask(Main.getInst(), () -> DataUtils.saveAllCaches());
|
||||
Bukkit.getScheduler().runTask(Main.getInst(), DataUtils::saveAllCaches);
|
||||
Bukkit.getScheduler().runTask(Main.getInst(), () -> PlayerDataManager.saveAllCaches(true, false));
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,10 @@
|
||||
package me.skymc.taboolib.listener;
|
||||
|
||||
import java.util.HashMap;
|
||||
import me.skymc.taboolib.events.PlayerJumpEvent;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -14,7 +12,7 @@ import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerMoveEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import me.skymc.taboolib.events.PlayerJumpEvent;
|
||||
import java.util.HashMap;
|
||||
|
||||
public class ListenerPlayerJump
|
||||
implements Listener
|
||||
@ -31,17 +29,16 @@ public class ListenerPlayerJump
|
||||
{
|
||||
if (!this.cooldown.containsKey(event.getPlayer()))
|
||||
{
|
||||
this.cooldown.put(event.getPlayer(), Long.valueOf(System.currentTimeMillis() + 350L));
|
||||
this.cooldown.put(event.getPlayer(), System.currentTimeMillis() + 350L);
|
||||
PlayerJumpEvent evt = new PlayerJumpEvent(event.isCancelled(), event.getPlayer());
|
||||
Bukkit.getPluginManager().callEvent(evt);
|
||||
if (evt.isCancelled())
|
||||
{
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
else if (((Long)this.cooldown.get(event.getPlayer())).longValue() <= System.currentTimeMillis())
|
||||
} else if (this.cooldown.get(event.getPlayer()) <= System.currentTimeMillis())
|
||||
{
|
||||
this.cooldown.put(event.getPlayer(), Long.valueOf(System.currentTimeMillis() + 350L));
|
||||
this.cooldown.put(event.getPlayer(), System.currentTimeMillis() + 350L);
|
||||
PlayerJumpEvent evt = new PlayerJumpEvent(event.isCancelled(), event.getPlayer());
|
||||
|
||||
Bukkit.getPluginManager().callEvent(evt);
|
||||
|
@ -1,15 +1,10 @@
|
||||
package me.skymc.taboolib.listener;
|
||||
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.PlayerJoinEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.database.PlayerDataManager;
|
||||
import me.skymc.taboolib.playerdata.DataUtils;
|
||||
|
||||
public class ListenerPlayerQuit implements Listener{
|
||||
|
||||
|
@ -1,19 +1,17 @@
|
||||
package me.skymc.taboolib.listener;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.mysql.MysqlUtils;
|
||||
import me.skymc.taboolib.mysql.protect.MySQLConnection;
|
||||
import me.skymc.taboolib.timecycle.TimeCycleManager;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.server.PluginDisableEvent;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class ListenerPluginDisable implements Listener {
|
||||
|
||||
|
@ -5,8 +5,6 @@ import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Block;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
|
||||
public class LocationUtils {
|
||||
|
||||
/**
|
||||
|
@ -1,17 +1,14 @@
|
||||
package me.skymc.taboolib.message;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import lombok.Getter;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||
import org.bukkit.event.player.PlayerQuitEvent;
|
||||
|
||||
import lombok.Getter;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
|
||||
public class ChatCatcher implements Listener {
|
||||
|
||||
@ -66,13 +63,13 @@ public class ChatCatcher implements Listener {
|
||||
playerdata.remove(player.getName());
|
||||
}
|
||||
}
|
||||
|
||||
public abstract interface Catcher {
|
||||
|
||||
public abstract Catcher before();
|
||||
|
||||
public abstract boolean after(String message);
|
||||
|
||||
public abstract void cancel();
|
||||
|
||||
public interface Catcher {
|
||||
|
||||
Catcher before();
|
||||
|
||||
boolean after(String message);
|
||||
|
||||
void cancel();
|
||||
}
|
||||
}
|
||||
|
@ -9,11 +9,7 @@ public class MethodsUtils {
|
||||
|
||||
public static boolean checkUser(String packagename, String current)
|
||||
{
|
||||
if (current.substring(0, 8).equals(packagename))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
return current.substring(0, 8).equals(packagename);
|
||||
}
|
||||
|
||||
@SuppressWarnings("rawtypes")
|
||||
@ -23,22 +19,14 @@ public class MethodsUtils {
|
||||
{
|
||||
throw new Error("未经允许的方法调用");
|
||||
}
|
||||
|
||||
Class<? extends Object> clazz = classname.getClass();
|
||||
|
||||
Class<?> clazz = classname.getClass();
|
||||
Method method = null;
|
||||
try {
|
||||
method = clazz.getDeclaredMethod(methodname, classes);
|
||||
method.setAccessible(true);
|
||||
return new Object[] { method.invoke(classname, objects) };
|
||||
} catch (SecurityException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalArgumentException e) {
|
||||
e.printStackTrace();
|
||||
} catch (NoSuchMethodException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
e.printStackTrace();
|
||||
} catch (InvocationTargetException e) {
|
||||
} catch (SecurityException | InvocationTargetException | IllegalAccessException | NoSuchMethodException | IllegalArgumentException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return null;
|
||||
@ -50,21 +38,15 @@ public class MethodsUtils {
|
||||
{
|
||||
throw new Error("未经允许的方法调用");
|
||||
}
|
||||
|
||||
Class<? extends Object> clazz = classname.getClass();
|
||||
|
||||
Class<?> clazz = classname.getClass();
|
||||
Field field = null;
|
||||
Object object = null;
|
||||
try {
|
||||
field = clazz.getDeclaredField(fieldname);
|
||||
field.setAccessible(true);
|
||||
object = field.get(classname);
|
||||
} catch (NoSuchFieldException e) {
|
||||
e.printStackTrace();
|
||||
} catch (SecurityException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalArgumentException e) {
|
||||
e.printStackTrace();
|
||||
} catch (IllegalAccessException e) {
|
||||
} catch (NoSuchFieldException | IllegalAccessException | IllegalArgumentException | SecurityException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
return object;
|
||||
|
@ -1,5 +1,7 @@
|
||||
package me.skymc.taboolib.methods;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.InvocationTargetException;
|
||||
@ -7,8 +9,6 @@ import java.lang.reflect.Method;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
/**
|
||||
* <b>ReflectionUtils</b>
|
||||
* <p>
|
||||
@ -60,7 +60,6 @@ public final class ReflectionUtils {
|
||||
* @return The constructor of the desired target class with the specified parameter types
|
||||
* @throws NoSuchMethodException If the desired constructor with the specified parameter types cannot be found
|
||||
* @throws ClassNotFoundException ClassNotFoundException If the desired target class with the specified name and package cannot be found
|
||||
* @see #getClass(String, PackageType)
|
||||
* @see #getConstructor(Class, Class...)
|
||||
*/
|
||||
public static Constructor<?> getConstructor(String className, PackageType packageType, Class<?>... parameterTypes) throws NoSuchMethodException, ClassNotFoundException {
|
||||
@ -96,7 +95,6 @@ public final class ReflectionUtils {
|
||||
* @throws InvocationTargetException If the desired constructor cannot be invoked
|
||||
* @throws NoSuchMethodException If the desired constructor with the specified arguments cannot be found
|
||||
* @throws ClassNotFoundException If the desired target class with the specified name and package cannot be found
|
||||
* @see #getClass(String, PackageType)
|
||||
* @see #instantiateObject(Class, Object...)
|
||||
*/
|
||||
public static Object instantiateObject(String className, PackageType packageType, Object... arguments) throws InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
|
||||
@ -135,7 +133,6 @@ public final class ReflectionUtils {
|
||||
* @return The method of the desired target class with the specified name and parameter types
|
||||
* @throws NoSuchMethodException If the desired method of the desired target class with the specified name and parameter types cannot be found
|
||||
* @throws ClassNotFoundException If the desired target class with the specified name and package cannot be found
|
||||
* @see #getClass(String, PackageType)
|
||||
* @see #getMethod(Class, String, Class...)
|
||||
*/
|
||||
public static Method getMethod(String className, PackageType packageType, String methodName, Class<?>... parameterTypes) throws NoSuchMethodException, ClassNotFoundException {
|
||||
@ -193,7 +190,6 @@ public final class ReflectionUtils {
|
||||
* @throws InvocationTargetException If the desired method cannot be invoked on the target object
|
||||
* @throws NoSuchMethodException If the desired method of the desired target class with the specified name and arguments cannot be found
|
||||
* @throws ClassNotFoundException If the desired target class with the specified name and package cannot be found
|
||||
* @see #getClass(String, PackageType)
|
||||
* @see #invokeMethod(Object, Class, String, Object...)
|
||||
*/
|
||||
public static Object invokeMethod(Object instance, String className, PackageType packageType, String methodName, Object... arguments) throws IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, ClassNotFoundException {
|
||||
@ -380,7 +376,7 @@ public final class ReflectionUtils {
|
||||
*
|
||||
* @param path Path of the package
|
||||
*/
|
||||
private PackageType(String path) {
|
||||
PackageType(String path) {
|
||||
this.path = path;
|
||||
}
|
||||
|
||||
@ -390,7 +386,7 @@ public final class ReflectionUtils {
|
||||
* @param parent Parent package of the package
|
||||
* @param path Path of the package
|
||||
*/
|
||||
private PackageType(PackageType parent, String path) {
|
||||
PackageType(PackageType parent, String path) {
|
||||
this(parent + "." + path);
|
||||
}
|
||||
|
||||
@ -448,7 +444,7 @@ public final class ReflectionUtils {
|
||||
DOUBLE(double.class, Double.class),
|
||||
BOOLEAN(boolean.class, Boolean.class);
|
||||
|
||||
private static final Map<Class<?>, DataType> CLASS_MAP = new HashMap<Class<?>, DataType>();
|
||||
private static final Map<Class<?>, DataType> CLASS_MAP = new HashMap<>();
|
||||
private final Class<?> primitive;
|
||||
private final Class<?> reference;
|
||||
|
||||
@ -466,7 +462,7 @@ public final class ReflectionUtils {
|
||||
* @param primitive Primitive class of this data type
|
||||
* @param reference Reference class of this data type
|
||||
*/
|
||||
private DataType(Class<?> primitive, Class<?> reference) {
|
||||
DataType(Class<?> primitive, Class<?> reference) {
|
||||
this.primitive = primitive;
|
||||
this.reference = reference;
|
||||
}
|
||||
@ -554,7 +550,6 @@ public final class ReflectionUtils {
|
||||
/**
|
||||
* Returns the primitive class array of the given object array
|
||||
*
|
||||
* @param object Given object array
|
||||
* @return The primitive class array
|
||||
*/
|
||||
public static Class<?>[] getPrimitive(Object[] objects) {
|
||||
@ -569,7 +564,6 @@ public final class ReflectionUtils {
|
||||
/**
|
||||
* Returns the reference class array of the given object array
|
||||
*
|
||||
* @param object Given object array
|
||||
* @return The reference class array
|
||||
*/
|
||||
public static Class<?>[] getReference(Object[] objects) {
|
||||
|
@ -1,17 +1,9 @@
|
||||
package me.skymc.taboolib.mysql;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.sql.Statement;
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
|
||||
import com.mysql.jdbc.PreparedStatement;
|
||||
|
||||
@Deprecated
|
||||
public class MysqlConnection {
|
||||
|
||||
@ -56,8 +48,6 @@ public class MysqlConnection {
|
||||
}
|
||||
|
||||
Thread.sleep(30000);
|
||||
} catch (SQLException e) {
|
||||
e.printStackTrace();
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -120,10 +110,10 @@ public class MysqlConnection {
|
||||
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
if (i + 1 < list.length) {
|
||||
stringBuilder.append("`" + checkString(list[i]) + "` varchar(255), ");
|
||||
stringBuilder.append("`").append(checkString(list[i])).append("` varchar(255), ");
|
||||
}
|
||||
else {
|
||||
stringBuilder.append("`" + checkString(list[i]) + "` varchar(255)");
|
||||
stringBuilder.append("`").append(checkString(list[i])).append("` varchar(255)");
|
||||
}
|
||||
}
|
||||
String url = "CREATE TABLE IF NOT EXISTS `" + table + "` ( " + stringBuilder + " )";
|
||||
@ -150,12 +140,12 @@ public class MysqlConnection {
|
||||
|
||||
for (int i = 0 ; i < list.length ; i++) {
|
||||
if (i + 1 < list.length) {
|
||||
listbuilder.append("`" + checkString(list[i]) + "`, ");
|
||||
valuebuilder.append("'" + checkString(values[i]) + "', ");
|
||||
listbuilder.append("`").append(checkString(list[i])).append("`, ");
|
||||
valuebuilder.append("'").append(checkString(values[i])).append("', ");
|
||||
}
|
||||
else {
|
||||
listbuilder.append("`" + checkString(list[i]) + "`");
|
||||
valuebuilder.append("'" + checkString(values[i]) + "'");
|
||||
listbuilder.append("`").append(checkString(list[i])).append("`");
|
||||
valuebuilder.append("'").append(checkString(values[i])).append("'");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,15 +1,12 @@
|
||||
package me.skymc.taboolib.mysql;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.mysql.protect.MySQLConnection;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
public class MysqlUtils {
|
||||
|
||||
|
@ -1,20 +1,15 @@
|
||||
package me.skymc.taboolib.mysql.protect;
|
||||
|
||||
import java.sql.Connection;
|
||||
import java.sql.DriverManager;
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import me.skymc.taboolib.Main;
|
||||
import org.bukkit.plugin.Plugin;
|
||||
|
||||
import java.sql.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.LinkedList;
|
||||
import java.util.List;
|
||||
|
||||
public class MySQLConnection {
|
||||
|
||||
@ -69,25 +64,19 @@ public class MySQLConnection {
|
||||
connect();
|
||||
|
||||
// 断线检测
|
||||
recheckThread = new Thread(new Runnable() {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
while (!Main.isDisable()) {
|
||||
try {
|
||||
Thread.sleep(getReCheckSeconds() * 1000);
|
||||
|
||||
if (connection == null) {
|
||||
print("警告! 数据库尚未连接, 请检查配置文件后重启服务器! (" + (plugin.getName()) + ")");
|
||||
continue;
|
||||
}
|
||||
else {
|
||||
isExists("taboolib");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
print("数据库命令执行出错");
|
||||
print("错误原因: " + e.getMessage());
|
||||
recheckThread = new Thread(() -> {
|
||||
while (!Main.isDisable()) {
|
||||
try {
|
||||
Thread.sleep(getReCheckSeconds() * 1000);
|
||||
|
||||
if (connection == null) {
|
||||
print("警告! 数据库尚未连接, 请检查配置文件后重启服务器! (" + (plugin.getName()) + ")");
|
||||
} else {
|
||||
isExists("taboolib");
|
||||
}
|
||||
} catch (Exception e) {
|
||||
print("数据库命令执行出错");
|
||||
print("错误原因: " + e.getMessage());
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -266,7 +255,7 @@ public class MySQLConnection {
|
||||
*/
|
||||
public boolean intoValue(String name, Object... values) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (int i = 0 ; i < values.length ; i++) {
|
||||
for (Object value : values) {
|
||||
sb.append("?, ");
|
||||
}
|
||||
PreparedStatement pstmt = null;
|
||||
@ -300,7 +289,7 @@ public class MySQLConnection {
|
||||
public boolean createTable(String name, Column... columns) {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (Column column : columns) {
|
||||
sb.append(column.toString() + ", ");
|
||||
sb.append(column.toString()).append(", ");
|
||||
}
|
||||
return execute("create table if not exists " + name + " (id int(1) not null primary key auto_increment, " + sb.substring(0, sb.length() - 2) + ")");
|
||||
}
|
||||
@ -316,9 +305,9 @@ public class MySQLConnection {
|
||||
StringBuilder sb = new StringBuilder();
|
||||
for (String column : columns) {
|
||||
if (!column.contains("/")) {
|
||||
sb.append("`" + column + "` text, ");
|
||||
sb.append("`").append(column).append("` text, ");
|
||||
} else {
|
||||
sb.append("`" + column.split("/")[0] + "` " + column.split("/")[1] + ", ");
|
||||
sb.append("`").append(column.split("/")[0]).append("` ").append(column.split("/")[1]).append(", ");
|
||||
}
|
||||
}
|
||||
return execute("create table if not exists " + name + " (id int(1) not null primary key auto_increment, " + sb.substring(0, sb.length() - 2) + ")");
|
||||
@ -749,25 +738,25 @@ public class MySQLConnection {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static enum ColumnInteger {
|
||||
|
||||
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT;
|
||||
|
||||
public enum ColumnInteger {
|
||||
|
||||
TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT
|
||||
}
|
||||
|
||||
public static enum ColumnFloat {
|
||||
|
||||
FLOAT, DOUBLE;
|
||||
|
||||
public enum ColumnFloat {
|
||||
|
||||
FLOAT, DOUBLE
|
||||
}
|
||||
|
||||
public static enum ColumnChar {
|
||||
|
||||
CHAR, VARCHAR;
|
||||
|
||||
public enum ColumnChar {
|
||||
|
||||
CHAR, VARCHAR
|
||||
}
|
||||
|
||||
public static enum ColumnString {
|
||||
|
||||
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT;
|
||||
|
||||
public enum ColumnString {
|
||||
|
||||
TINYTEXT, TEXT, MEDIUMTEXT, LONGTEXT
|
||||
}
|
||||
|
||||
public static class Column {
|
||||
|
@ -1,10 +1,6 @@
|
||||
package me.skymc.taboolib.nms;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
@ -915,7 +911,7 @@ public class NMSUtil18 {
|
||||
// Testing Glow API based on ItemMetadata storage
|
||||
Object bukkitData = createNode(stack, "bukkit");
|
||||
class_NBTTagCompound_setBooleanMethod.invoke(bukkitData, "glow", true);
|
||||
} catch (Throwable ex) {
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -939,7 +935,7 @@ public class NMSUtil18 {
|
||||
if (bukkitData != null) {
|
||||
class_NBTTagCompound_setBooleanMethod.invoke(bukkitData, "glow", false);
|
||||
}
|
||||
} catch (Throwable ex) {
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -960,7 +956,7 @@ public class NMSUtil18 {
|
||||
unbreakableFlag = class_NBTTagByte_legacy_constructor.newInstance("", (byte) 1);
|
||||
}
|
||||
class_NBTTagCompound_setMethod.invoke(tagObject, "Unbreakable", unbreakableFlag);
|
||||
} catch (Throwable ex) {
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -985,7 +981,7 @@ public class NMSUtil18 {
|
||||
hideFlag = class_NBTTagByte_legacy_constructor.newInstance("", flags);
|
||||
}
|
||||
class_NBTTagCompound_setMethod.invoke(tagObject, "HideFlags", hideFlag);
|
||||
} catch (Throwable ex) {
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,12 +1,7 @@
|
||||
package me.skymc.taboolib.nms;
|
||||
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.DyeColor;
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.Server;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.configuration.ConfigurationSection;
|
||||
import org.bukkit.configuration.MemorySection;
|
||||
@ -24,12 +19,7 @@ import java.io.InputStream;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.UUID;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
@ -1139,8 +1129,7 @@ public class NMSUtil19 {
|
||||
}
|
||||
|
||||
public static boolean hasMeta(ItemStack stack, String tag) {
|
||||
if (NMSUtil19.isEmpty(stack)) return false;
|
||||
return getNode(stack, tag) != null;
|
||||
return !NMSUtil19.isEmpty(stack) && getNode(stack, tag) != null;
|
||||
}
|
||||
|
||||
public static Object getTag(ItemStack itemStack) {
|
||||
@ -1474,7 +1463,7 @@ public class NMSUtil19 {
|
||||
Object tagObject = getTag(craft);
|
||||
if (tagObject == null) return false;
|
||||
unbreakableFlag = getMetaBoolean(tagObject, "Unbreakable");
|
||||
} catch (Throwable ex) {
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
|
||||
@ -1493,7 +1482,7 @@ public class NMSUtil19 {
|
||||
Object unbreakableFlag = null;
|
||||
unbreakableFlag = class_NBTTagByte_constructor.newInstance((byte) 1);
|
||||
class_NBTTagCompound_setMethod.invoke(tagObject, "Unbreakable", unbreakableFlag);
|
||||
} catch (Throwable ex) {
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
@ -1514,7 +1503,7 @@ public class NMSUtil19 {
|
||||
Object hideFlag = null;
|
||||
hideFlag = class_NBTTagByte_constructor.newInstance(flags);
|
||||
class_NBTTagCompound_setMethod.invoke(tagObject, "HideFlags", hideFlag);
|
||||
} catch (Throwable ex) {
|
||||
} catch (Throwable ignored) {
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -1,14 +1,11 @@
|
||||
package me.skymc.taboolib.nms;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Modifier;
|
||||
import java.util.UUID;
|
||||
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.entity.Entity;
|
||||
|
||||
public class NMSUtils {
|
||||
|
||||
@ -34,7 +31,7 @@ public class NMSUtils {
|
||||
for(String s : strings){
|
||||
try{
|
||||
return getClassWithException(s);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@ -43,7 +40,7 @@ public class NMSUtils {
|
||||
public static Class<?> getClassSilent(String name){
|
||||
try{
|
||||
return getClassWithException(name);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -64,7 +61,7 @@ public class NMSUtils {
|
||||
public static Class<?> getNMSClassSilent(String className){
|
||||
try{
|
||||
return getNMSClassWithException(className);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -101,7 +98,7 @@ public class NMSUtils {
|
||||
public static Class<?> getOBCClassSilent(String className){
|
||||
try{
|
||||
return getOBCClassWithException(className);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -175,7 +172,7 @@ public class NMSUtils {
|
||||
for(String name : names){
|
||||
try{
|
||||
return getFieldWithException(clazz, name);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@ -184,7 +181,7 @@ public class NMSUtils {
|
||||
public static Field getFieldSilent(Class<?> clazz, String name){
|
||||
try{
|
||||
return getFieldWithException(clazz, name);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -193,7 +190,7 @@ public class NMSUtils {
|
||||
for(String name : names){
|
||||
try{
|
||||
return getFieldWithException(clazz, name);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
@ -298,7 +295,7 @@ public class NMSUtils {
|
||||
public static Method getMethodSilent(Class<?> clazz, String name, Class<?>... args){
|
||||
try{
|
||||
return getMethodWithException(clazz, name, args);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -331,7 +328,7 @@ public class NMSUtils {
|
||||
public static Class<?> getInnerClassSilent(Class<?> c, String className){
|
||||
try{
|
||||
return getInnerClassWithException(c, className);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -353,7 +350,7 @@ public class NMSUtils {
|
||||
public static Constructor<?> getConstructorSilent(Class<?> clazz, Class<?>... args){
|
||||
try{
|
||||
return getConstructor(clazz, args);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -1,22 +1,21 @@
|
||||
package me.skymc.taboolib.nms.item;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.nms.item.impl._164ItemUtils;
|
||||
import me.skymc.taboolib.nms.item.impl._1710ItemUtils;
|
||||
import me.skymc.taboolib.nms.item.impl._194ItemUtils;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.enchantments.Enchantment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.message.MsgUtils;
|
||||
import me.skymc.taboolib.nms.item.impl._194ItemUtils;
|
||||
import me.skymc.taboolib.nms.item.impl._164ItemUtils;
|
||||
import me.skymc.taboolib.nms.item.impl._1710ItemUtils;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
public class DabItemUtils {
|
||||
|
||||
@ -32,21 +31,21 @@ public class DabItemUtils {
|
||||
inst.convertItemStackToJSON(is);
|
||||
MsgUtils.send("载入 1.9.4 Spigot 物品工具成功!");
|
||||
return inst;
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
try{
|
||||
_1710ItemUtils inst = new _1710ItemUtils();
|
||||
inst.convertItemStackToJSON(is);
|
||||
MsgUtils.send("载入 1.7.10 Cauldron 物品工具成功!");
|
||||
return inst;
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
try{
|
||||
IDabItemUtils inst = new _164ItemUtils();
|
||||
inst.convertItemStackToJSON(is);
|
||||
MsgUtils.send("载入 1.6.4 Cauldron 物品工具成功!");
|
||||
return inst;
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
MsgUtils.send("&4物品工具载入失败, 插件已关闭!");
|
||||
Bukkit.getPluginManager().disablePlugin(Main.getInst());
|
||||
|
@ -1,102 +1,171 @@
|
||||
package me.skymc.taboolib.nms.item;
|
||||
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
|
||||
public interface IDabItemUtils{
|
||||
|
||||
//@formatter:off
|
||||
public boolean hasBanner();
|
||||
public Object getNMSCopy(ItemStack is) throws Exception;
|
||||
public boolean hasTag(Object is) throws Exception;
|
||||
public ItemStack asCraftMirror(Object nis) throws Exception;
|
||||
public ItemStack asBukkitCopy(Object nmis) throws Exception;
|
||||
public String getName(ItemStack is);
|
||||
public Object getItem(Object nis) throws Exception;
|
||||
public Method getA();
|
||||
public String getRawName(ItemStack is);
|
||||
public String getItemName(ItemStack is);
|
||||
public Object getRegistry();
|
||||
public String getMinecraftName(ItemStack is);
|
||||
public Object getTag(Object is) throws Exception;
|
||||
public void setTag(Object is, Object tag1) throws Exception;
|
||||
public boolean isEmpty(Object tag) throws Exception;
|
||||
public Object getMap(Object tag) throws Exception;
|
||||
public void set(Object tag, String key, Object value) throws Exception;
|
||||
public void setString(Object tag, String key, String value) throws Exception;
|
||||
public void setShort(Object tag, String key, short value) throws Exception;
|
||||
public void setInt(Object tag, String key, int i) throws Exception;
|
||||
public void setDouble(Object tag, String key, double d) throws Exception;
|
||||
public void setLong(Object tag, String key, long l) throws Exception;
|
||||
public boolean hasKey(Object tag, String key) throws Exception;
|
||||
public Object get(Object tag, String key) throws Exception;
|
||||
public String getString(Object tag, String key) throws Exception;
|
||||
public int getInt(Object tag, String key) throws Exception;
|
||||
public double getDouble(Object tag, String key) throws Exception;
|
||||
public long getLong(Object tag, String key) throws Exception;
|
||||
public short getShort(Object tag, String key) throws Exception;
|
||||
public Object getNewNBTTagCompound() throws Exception;
|
||||
public boolean hasAttributeModifiersKey(Object tag) throws Exception;
|
||||
public Object getList(Object tag) throws Exception;
|
||||
public Object getList(Object tag, String name, int id) throws Exception;
|
||||
public boolean getUnbreakable(Object tag) throws Exception;
|
||||
public void setUnbreakable(Object tag, boolean value) throws Exception;
|
||||
public Object getNewNBTTagList() throws Exception;
|
||||
public void addToList(Object taglist, Object nbt) throws Exception;
|
||||
public int getSize(Object list) throws Exception;
|
||||
public Object get(Object tlist, int i) throws Exception;
|
||||
public Object getNewNBTTagByte(byte value) throws Exception;
|
||||
public Object getNewNBTTagByteArray(byte[] value) throws Exception;
|
||||
public Object getData(Object nbt) throws Exception;
|
||||
public Object createData(Object value) throws Exception;
|
||||
public Map<String, Object> convertCompoundTagToValueMap(Object nbt) throws Exception;
|
||||
public List<Object> convertListTagToValueList(Object nbttl) throws Exception;
|
||||
public Object convertValueMapToCompoundTag(Map<String, Object> map) throws Exception;
|
||||
public Object convertValueListToListTag(List<Object> list) throws Exception;
|
||||
boolean hasBanner();
|
||||
|
||||
Object getNMSCopy(ItemStack is) throws Exception;
|
||||
|
||||
boolean hasTag(Object is) throws Exception;
|
||||
|
||||
ItemStack asCraftMirror(Object nis) throws Exception;
|
||||
|
||||
ItemStack asBukkitCopy(Object nmis) throws Exception;
|
||||
|
||||
String getName(ItemStack is);
|
||||
|
||||
Object getItem(Object nis) throws Exception;
|
||||
|
||||
Method getA();
|
||||
|
||||
String getRawName(ItemStack is);
|
||||
|
||||
String getItemName(ItemStack is);
|
||||
|
||||
Object getRegistry();
|
||||
|
||||
String getMinecraftName(ItemStack is);
|
||||
|
||||
Object getTag(Object is) throws Exception;
|
||||
|
||||
void setTag(Object is, Object tag1) throws Exception;
|
||||
|
||||
boolean isEmpty(Object tag) throws Exception;
|
||||
|
||||
Object getMap(Object tag) throws Exception;
|
||||
|
||||
void set(Object tag, String key, Object value) throws Exception;
|
||||
|
||||
void setString(Object tag, String key, String value) throws Exception;
|
||||
|
||||
void setShort(Object tag, String key, short value) throws Exception;
|
||||
|
||||
void setInt(Object tag, String key, int i) throws Exception;
|
||||
|
||||
void setDouble(Object tag, String key, double d) throws Exception;
|
||||
|
||||
void setLong(Object tag, String key, long l) throws Exception;
|
||||
|
||||
boolean hasKey(Object tag, String key) throws Exception;
|
||||
|
||||
Object get(Object tag, String key) throws Exception;
|
||||
|
||||
String getString(Object tag, String key) throws Exception;
|
||||
|
||||
int getInt(Object tag, String key) throws Exception;
|
||||
|
||||
double getDouble(Object tag, String key) throws Exception;
|
||||
|
||||
long getLong(Object tag, String key) throws Exception;
|
||||
|
||||
short getShort(Object tag, String key) throws Exception;
|
||||
|
||||
Object getNewNBTTagCompound() throws Exception;
|
||||
|
||||
boolean hasAttributeModifiersKey(Object tag) throws Exception;
|
||||
|
||||
Object getList(Object tag) throws Exception;
|
||||
|
||||
Object getList(Object tag, String name, int id) throws Exception;
|
||||
|
||||
boolean getUnbreakable(Object tag) throws Exception;
|
||||
|
||||
void setUnbreakable(Object tag, boolean value) throws Exception;
|
||||
|
||||
Object getNewNBTTagList() throws Exception;
|
||||
|
||||
void addToList(Object taglist, Object nbt) throws Exception;
|
||||
|
||||
int getSize(Object list) throws Exception;
|
||||
|
||||
Object get(Object tlist, int i) throws Exception;
|
||||
|
||||
Object getNewNBTTagByte(byte value) throws Exception;
|
||||
|
||||
Object getNewNBTTagByteArray(byte[] value) throws Exception;
|
||||
|
||||
Object getData(Object nbt) throws Exception;
|
||||
|
||||
Object createData(Object value) throws Exception;
|
||||
|
||||
Map<String, Object> convertCompoundTagToValueMap(Object nbt) throws Exception;
|
||||
|
||||
List<Object> convertListTagToValueList(Object nbttl) throws Exception;
|
||||
|
||||
Object convertValueMapToCompoundTag(Map<String, Object> map) throws Exception;
|
||||
|
||||
Object convertValueListToListTag(List<Object> list) throws Exception;
|
||||
@Deprecated
|
||||
public void convertListTagToJSON(Object nbttl, JSONArray ja, JSONArray helper) throws Exception;
|
||||
public void convertListTagToJSON(Object nbttl, JSONArray ja) throws Exception;
|
||||
void convertListTagToJSON(Object nbttl, JSONArray ja, JSONArray helper) throws Exception;
|
||||
|
||||
void convertListTagToJSON(Object nbttl, JSONArray ja) throws Exception;
|
||||
@Deprecated
|
||||
public void convertCompoundTagToJSON(Object nbt, JSONObject jo, JSONObject helper) throws Exception;
|
||||
public void convertCompoundTagToJSON(Object nbt, JSONObject jo) throws Exception;
|
||||
void convertCompoundTagToJSON(Object nbt, JSONObject jo, JSONObject helper) throws Exception;
|
||||
|
||||
void convertCompoundTagToJSON(Object nbt, JSONObject jo) throws Exception;
|
||||
@Deprecated
|
||||
public Object convertJSONToCompoundTag(JSONObject jo, JSONObject helper) throws Exception;
|
||||
public Object convertJSONToCompoundTag(JSONObject jo) throws Exception;
|
||||
Object convertJSONToCompoundTag(JSONObject jo, JSONObject helper) throws Exception;
|
||||
|
||||
Object convertJSONToCompoundTag(JSONObject jo) throws Exception;
|
||||
@Deprecated
|
||||
public Object convertJSONToListTag(JSONArray ja, JSONArray helper) throws Exception;
|
||||
public Object convertJSONToListTag(JSONArray ja) throws Exception;
|
||||
Object convertJSONToListTag(JSONArray ja, JSONArray helper) throws Exception;
|
||||
|
||||
Object convertJSONToListTag(JSONArray ja) throws Exception;
|
||||
@Deprecated
|
||||
public Object getDataJSON(String key, Object nbt, JSONObject jo, JSONObject helper) throws Exception;
|
||||
public JSONArray getDataJSON(Object nbt) throws Exception;
|
||||
Object getDataJSON(String key, Object nbt, JSONObject jo, JSONObject helper) throws Exception;
|
||||
|
||||
JSONArray getDataJSON(Object nbt) throws Exception;
|
||||
@Deprecated
|
||||
public Object getDataJSON(Object nbt, JSONArray ja, JSONArray helper) throws Exception;
|
||||
Object getDataJSON(Object nbt, JSONArray ja, JSONArray helper) throws Exception;
|
||||
@Deprecated
|
||||
public Object createDataJSON(String key, JSONObject jo, JSONObject helper) throws Exception;
|
||||
public Object createDataJSON(String key, JSONObject jo) throws Exception;
|
||||
public byte getByte(Object o);
|
||||
public short getShort(Object o);
|
||||
public int getInt(Object o);
|
||||
public double getDouble(Object o);
|
||||
public float getFloat(Object o);
|
||||
public long getLong(Object o);
|
||||
Object createDataJSON(String key, JSONObject jo, JSONObject helper) throws Exception;
|
||||
|
||||
Object createDataJSON(String key, JSONObject jo) throws Exception;
|
||||
|
||||
byte getByte(Object o);
|
||||
|
||||
short getShort(Object o);
|
||||
|
||||
int getInt(Object o);
|
||||
|
||||
double getDouble(Object o);
|
||||
|
||||
float getFloat(Object o);
|
||||
|
||||
long getLong(Object o);
|
||||
@Deprecated
|
||||
public Object createDataJSON(int key, JSONArray jo, JSONArray helper) throws Exception;
|
||||
public Object createDataJSON(int key, JSONArray jo) throws Exception;
|
||||
public boolean compareBaseTag(Object tag, Object tag1) throws Exception;
|
||||
public boolean compareCompoundTag(Object tag, Object tag1) throws Exception;
|
||||
public boolean compareListTag(Object tag, Object tag1) throws Exception;
|
||||
public boolean compare(ItemStack is1, ItemStack is2);
|
||||
public boolean canMerge(ItemStack add, ItemStack to);
|
||||
public boolean isModified(ItemStack is);
|
||||
public void sortByMaterial(List<ItemStack> items);
|
||||
public void sortByName(List<ItemStack> items);
|
||||
public void sortByAmount(List<ItemStack> items);
|
||||
public ItemStack convertJSONToItemStack(JSONObject jo) throws Exception;
|
||||
public JSONObject convertItemStackToJSON(ItemStack is) throws Exception;
|
||||
Object createDataJSON(int key, JSONArray jo, JSONArray helper) throws Exception;
|
||||
|
||||
Object createDataJSON(int key, JSONArray jo) throws Exception;
|
||||
|
||||
boolean compareBaseTag(Object tag, Object tag1) throws Exception;
|
||||
|
||||
boolean compareCompoundTag(Object tag, Object tag1) throws Exception;
|
||||
|
||||
boolean compareListTag(Object tag, Object tag1) throws Exception;
|
||||
|
||||
boolean compare(ItemStack is1, ItemStack is2);
|
||||
|
||||
boolean canMerge(ItemStack add, ItemStack to);
|
||||
|
||||
boolean isModified(ItemStack is);
|
||||
|
||||
void sortByMaterial(List<ItemStack> items);
|
||||
|
||||
void sortByName(List<ItemStack> items);
|
||||
|
||||
void sortByAmount(List<ItemStack> items);
|
||||
|
||||
ItemStack convertJSONToItemStack(JSONObject jo) throws Exception;
|
||||
|
||||
JSONObject convertItemStackToJSON(ItemStack is) throws Exception;
|
||||
}
|
||||
|
@ -1,26 +1,19 @@
|
||||
package me.skymc.taboolib.nms.item.impl;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.UUID;
|
||||
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
import me.skymc.taboolib.nms.item.IDabItemUtils;
|
||||
import me.skymc.taboolib.nms.nbt.NBTConstants;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.json.*;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
import me.skymc.taboolib.nms.item.IDabItemUtils;
|
||||
import me.skymc.taboolib.nms.nbt.NBTConstants;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class _164ItemUtils implements IDabItemUtils{
|
||||
|
||||
@ -30,7 +23,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
try{
|
||||
Material m = Material.valueOf("BANNER");
|
||||
if(m != null){ return true; }
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -110,7 +103,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
public Object getRegistry(){
|
||||
try{
|
||||
return NMSUtils.getFieldSilent(ni, "REGISTRY", "field_150901_e").get(null);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -376,7 +369,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
public Map<String, Object> convertCompoundTagToValueMap(Object nbt) throws Exception{
|
||||
Map<String, Object> ret = new HashMap<String, Object>();
|
||||
Map<String, Object> ret = new HashMap<>();
|
||||
Map<String, Object> map = (Map<String, Object>)getMap(nbt);
|
||||
for(Entry<String, Object> e : map.entrySet()){
|
||||
Object nbti = e.getValue();
|
||||
@ -390,7 +383,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<Object> convertListTagToValueList(Object nbttl) throws Exception{
|
||||
List<Object> ret = new ArrayList<Object>();
|
||||
List<Object> ret = new ArrayList<>();
|
||||
List<Object> list = (List<Object>)nbtld.get(nbttl);
|
||||
for(Object e : list){
|
||||
Object data = getData(e);
|
||||
@ -402,7 +395,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public Object convertValueMapToCompoundTag(Map<String, Object> map) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
for(Entry<String, Object> e : map.entrySet()){
|
||||
value.put(e.getKey(), createData(e.getValue()));
|
||||
}
|
||||
@ -412,14 +405,14 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public Object convertValueListToListTag(List<Object> list) throws Exception{
|
||||
List<Object> value = new ArrayList<Object>();
|
||||
List<Object> value = new ArrayList<>();
|
||||
for(Object e : list){
|
||||
value.add(createData(e));
|
||||
}
|
||||
Object ret = getNewNBTTagList();
|
||||
nbttcm.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -475,7 +468,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
@Deprecated
|
||||
@SuppressWarnings("unchecked")
|
||||
public Object convertJSONToCompoundTag(JSONObject jo, JSONObject helper) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
Iterator<String> it = jo.keys();
|
||||
while(it.hasNext()){
|
||||
String e = it.next();
|
||||
@ -488,7 +481,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Object convertJSONToCompoundTag(JSONObject jo) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
Iterator<String> it = jo.keys();
|
||||
while(it.hasNext()){
|
||||
String e = it.next();
|
||||
@ -509,7 +502,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
Object ret = getNewNBTTagList();
|
||||
nbtld.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -523,7 +516,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
Object ret = getNewNBTTagList();
|
||||
nbtld.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -742,7 +735,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
public Object createDataJSON(String key, JSONObject jo) throws Exception{
|
||||
JSONArray j = jo.getJSONArray(key);
|
||||
Object ret = null;
|
||||
int i = (int)j.getInt(0);
|
||||
int i = j.getInt(0);
|
||||
switch(i){
|
||||
case NBTConstants.TYPE_COMPOUND:
|
||||
ret = convertJSONToCompoundTag(j.getJSONObject(1));
|
||||
@ -889,7 +882,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
public Object createDataJSON(int key, JSONArray jo) throws Exception{
|
||||
JSONArray j = jo.getJSONArray(key);
|
||||
Object ret = null;
|
||||
int i = (int)j.getInt(0);
|
||||
int i = j.getInt(0);
|
||||
switch(i){
|
||||
case NBTConstants.TYPE_COMPOUND:
|
||||
ret = convertJSONToCompoundTag(j.getJSONObject(1));
|
||||
@ -970,7 +963,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
case NBTConstants.TYPE_BYTE_ARRAY:
|
||||
byte[] ba = (byte[])nbtbad.get(tag);
|
||||
byte[] ba1 = (byte[])nbtbad.get(tag1);
|
||||
return ba.equals(ba1);
|
||||
return Arrays.equals(ba, ba1);
|
||||
case NBTConstants.TYPE_STRING:
|
||||
String st = (String)nbtstd.get(tag);
|
||||
String st1 = (String)nbtstd.get(tag1);
|
||||
@ -983,7 +976,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
case NBTConstants.TYPE_INT_ARRAY:
|
||||
int[] ia = (int[])nbtiad.get(tag);
|
||||
int[] ia1 = (int[])nbtiad.get(tag);
|
||||
return ia.equals(ia1);
|
||||
return Arrays.equals(ia, ia1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -1028,8 +1021,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
cont = true;
|
||||
break;
|
||||
}
|
||||
;
|
||||
}
|
||||
}
|
||||
if(!cont)
|
||||
return false;
|
||||
}
|
||||
@ -1041,7 +1033,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public Map<Integer, Object> getAttributes(Object attribs) throws Exception{
|
||||
Map<Integer, Object> r = new HashMap<Integer, Object>();
|
||||
Map<Integer, Object> r = new HashMap<>();
|
||||
for(int i = 0; i < getSize(attribs); i++){
|
||||
Object compound = g.invoke(attribs, i);
|
||||
Object attrib = a.invoke(null, compound);
|
||||
@ -1058,23 +1050,18 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
public boolean compare(ItemStack is1, ItemStack is2){
|
||||
if(is1.getType().equals(is2.getType())){
|
||||
if(is1.getDurability() == is2.getDurability()){
|
||||
try{
|
||||
try {
|
||||
Object nis1 = getNMSCopy(is1);
|
||||
Object nis2 = getNMSCopy(is2);
|
||||
Object tis1 = getTag(nis1);
|
||||
Object tis2 = getTag(nis2);
|
||||
if(tis1 != null && tis2 == null){
|
||||
if(isEmpty(tis1))
|
||||
return true;
|
||||
return false;
|
||||
if (tis1 != null && tis2 == null) {
|
||||
return isEmpty(tis1);
|
||||
}
|
||||
if(tis1 == null && tis2 != null){
|
||||
if(isEmpty(tis2))
|
||||
return true;
|
||||
return false;
|
||||
if (tis1 == null && tis2 != null) {
|
||||
return isEmpty(tis2);
|
||||
}
|
||||
if(tis1 == null && tis2 == null){ return true; }
|
||||
return compareCompoundTag(tis1, tis2);
|
||||
return tis1 == null && tis2 == null || compareCompoundTag(tis1, tis2);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -1095,7 +1082,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByMaterial(List<ItemStack> items){
|
||||
Collections.sort(items, new MaterialComparator());
|
||||
items.sort(new MaterialComparator());
|
||||
}
|
||||
|
||||
public class MaterialComparator implements Comparator<ItemStack>{
|
||||
@ -1106,7 +1093,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByName(List<ItemStack> items){
|
||||
Collections.sort(items, new NameComparator());
|
||||
items.sort(new NameComparator());
|
||||
}
|
||||
|
||||
public class NameComparator implements Comparator<ItemStack>{
|
||||
@ -1123,7 +1110,7 @@ public class _164ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByAmount(List<ItemStack> items){
|
||||
Collections.sort(items, new AmountComparator());
|
||||
items.sort(new AmountComparator());
|
||||
}
|
||||
|
||||
public class AmountComparator implements Comparator<ItemStack>{
|
||||
|
@ -1,25 +1,19 @@
|
||||
package me.skymc.taboolib.nms.item.impl;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
import me.skymc.taboolib.nms.item.IDabItemUtils;
|
||||
import me.skymc.taboolib.nms.nbt.NBTConstants;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.json.*;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
import me.skymc.taboolib.nms.item.IDabItemUtils;
|
||||
import me.skymc.taboolib.nms.nbt.NBTConstants;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class _1710ItemUtils implements IDabItemUtils{
|
||||
|
||||
@ -29,7 +23,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
try{
|
||||
Material m = Material.valueOf("BANNER");
|
||||
if(m != null){ return true; }
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -109,7 +103,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
public Object getRegistry(){
|
||||
try{
|
||||
return NMSUtils.getFieldSilent(ni, "REGISTRY", "field_150901_e").get(null);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -374,7 +368,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
public Map<String, Object> convertCompoundTagToValueMap(Object nbt) throws Exception{
|
||||
Map<String, Object> ret = new HashMap<String, Object>();
|
||||
Map<String, Object> ret = new HashMap<>();
|
||||
Map<String, Object> map = (Map<String, Object>)getMap(nbt);
|
||||
for(Entry<String, Object> e : map.entrySet()){
|
||||
Object nbti = e.getValue();
|
||||
@ -388,7 +382,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<Object> convertListTagToValueList(Object nbttl) throws Exception{
|
||||
List<Object> ret = new ArrayList<Object>();
|
||||
List<Object> ret = new ArrayList<>();
|
||||
List<Object> list = (List<Object>)nbtld.get(nbttl);
|
||||
for(Object e : list){
|
||||
Object data = getData(e);
|
||||
@ -400,7 +394,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public Object convertValueMapToCompoundTag(Map<String, Object> map) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
for(Entry<String, Object> e : map.entrySet()){
|
||||
value.put(e.getKey(), createData(e.getValue()));
|
||||
}
|
||||
@ -410,14 +404,14 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public Object convertValueListToListTag(List<Object> list) throws Exception{
|
||||
List<Object> value = new ArrayList<Object>();
|
||||
List<Object> value = new ArrayList<>();
|
||||
for(Object e : list){
|
||||
value.add(createData(e));
|
||||
}
|
||||
Object ret = getNewNBTTagList();
|
||||
nbttcm.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -473,7 +467,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
@Deprecated
|
||||
@SuppressWarnings("unchecked")
|
||||
public Object convertJSONToCompoundTag(JSONObject jo, JSONObject helper) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
Iterator<String> it = jo.keys();
|
||||
while(it.hasNext()){
|
||||
String e = it.next();
|
||||
@ -486,7 +480,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Object convertJSONToCompoundTag(JSONObject jo) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
Iterator<String> it = jo.keys();
|
||||
while(it.hasNext()){
|
||||
String e = it.next();
|
||||
@ -507,7 +501,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
Object ret = getNewNBTTagList();
|
||||
nbtld.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -521,7 +515,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
Object ret = getNewNBTTagList();
|
||||
nbtld.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -740,7 +734,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
public Object createDataJSON(String key, JSONObject jo) throws Exception{
|
||||
JSONArray j = jo.getJSONArray(key);
|
||||
Object ret = null;
|
||||
int i = (int)j.getInt(0);
|
||||
int i = j.getInt(0);
|
||||
switch(i){
|
||||
case NBTConstants.TYPE_COMPOUND:
|
||||
ret = convertJSONToCompoundTag(j.getJSONObject(1));
|
||||
@ -887,7 +881,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
public Object createDataJSON(int key, JSONArray jo) throws Exception{
|
||||
JSONArray j = jo.getJSONArray(key);
|
||||
Object ret = null;
|
||||
int i = (int)j.getInt(0);
|
||||
int i = j.getInt(0);
|
||||
switch(i){
|
||||
case NBTConstants.TYPE_COMPOUND:
|
||||
ret = convertJSONToCompoundTag(j.getJSONObject(1));
|
||||
@ -968,7 +962,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
case NBTConstants.TYPE_BYTE_ARRAY:
|
||||
byte[] ba = (byte[])nbtbad.get(tag);
|
||||
byte[] ba1 = (byte[])nbtbad.get(tag1);
|
||||
return ba.equals(ba1);
|
||||
return Arrays.equals(ba, ba1);
|
||||
case NBTConstants.TYPE_STRING:
|
||||
String st = (String)nbtstd.get(tag);
|
||||
String st1 = (String)nbtstd.get(tag1);
|
||||
@ -981,7 +975,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
case NBTConstants.TYPE_INT_ARRAY:
|
||||
int[] ia = (int[])nbtiad.get(tag);
|
||||
int[] ia1 = (int[])nbtiad.get(tag);
|
||||
return ia.equals(ia1);
|
||||
return Arrays.equals(ia, ia1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -1027,23 +1021,18 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
public boolean compare(ItemStack is1, ItemStack is2){
|
||||
if(is1.getType().equals(is2.getType())){
|
||||
if(is1.getDurability() == is2.getDurability()){
|
||||
try{
|
||||
try {
|
||||
Object nis1 = getNMSCopy(is1);
|
||||
Object nis2 = getNMSCopy(is2);
|
||||
Object tis1 = getTag(nis1);
|
||||
Object tis2 = getTag(nis2);
|
||||
if(tis1 != null && tis2 == null){
|
||||
if(isEmpty(tis1))
|
||||
return true;
|
||||
return false;
|
||||
if (tis1 != null && tis2 == null) {
|
||||
return isEmpty(tis1);
|
||||
}
|
||||
if(tis1 == null && tis2 != null){
|
||||
if(isEmpty(tis2))
|
||||
return true;
|
||||
return false;
|
||||
if (tis1 == null && tis2 != null) {
|
||||
return isEmpty(tis2);
|
||||
}
|
||||
if(tis1 == null && tis2 == null){ return true; }
|
||||
return compareCompoundTag(tis1, tis2);
|
||||
return tis1 == null && tis2 == null || compareCompoundTag(tis1, tis2);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -1064,7 +1053,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByMaterial(List<ItemStack> items){
|
||||
Collections.sort(items, new MaterialComparator());
|
||||
items.sort(new MaterialComparator());
|
||||
}
|
||||
|
||||
public class MaterialComparator implements Comparator<ItemStack>{
|
||||
@ -1075,7 +1064,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByName(List<ItemStack> items){
|
||||
Collections.sort(items, new NameComparator());
|
||||
items.sort(new NameComparator());
|
||||
}
|
||||
|
||||
public class NameComparator implements Comparator<ItemStack>{
|
||||
@ -1092,7 +1081,7 @@ public class _1710ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByAmount(List<ItemStack> items){
|
||||
Collections.sort(items, new AmountComparator());
|
||||
items.sort(new AmountComparator());
|
||||
}
|
||||
|
||||
public class AmountComparator implements Comparator<ItemStack>{
|
||||
|
@ -1,25 +1,19 @@
|
||||
package me.skymc.taboolib.nms.item.impl;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import me.skymc.taboolib.json.JSONArray;
|
||||
import me.skymc.taboolib.json.JSONObject;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
import me.skymc.taboolib.nms.item.IDabItemUtils;
|
||||
import me.skymc.taboolib.nms.nbt.NBTConstants;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import me.skymc.taboolib.json.*;
|
||||
import me.skymc.taboolib.nms.NMSUtils;
|
||||
import me.skymc.taboolib.nms.item.IDabItemUtils;
|
||||
import me.skymc.taboolib.nms.nbt.NBTConstants;
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
public class _194ItemUtils implements IDabItemUtils{
|
||||
|
||||
@ -29,7 +23,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
try{
|
||||
Material m = Material.valueOf("BANNER");
|
||||
if(m != null){ return true; }
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -113,7 +107,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
public Object getRegistry(){
|
||||
try{
|
||||
return NMSUtils.getFieldSilent(ni, "REGISTRY").get(null);
|
||||
}catch(Exception e){
|
||||
} catch (Exception ignored) {
|
||||
}
|
||||
return null;
|
||||
}
|
||||
@ -375,7 +369,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings({ "unchecked" })
|
||||
public Map<String, Object> convertCompoundTagToValueMap(Object nbt) throws Exception{
|
||||
Map<String, Object> ret = new HashMap<String, Object>();
|
||||
Map<String, Object> ret = new HashMap<>();
|
||||
Map<String, Object> map = (Map<String, Object>)getMap(nbt);
|
||||
for(Entry<String, Object> e : map.entrySet()){
|
||||
Object nbti = e.getValue();
|
||||
@ -389,7 +383,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public List<Object> convertListTagToValueList(Object nbttl) throws Exception{
|
||||
List<Object> ret = new ArrayList<Object>();
|
||||
List<Object> ret = new ArrayList<>();
|
||||
List<Object> list = (List<Object>)nbtld.get(nbttl);
|
||||
for(Object e : list){
|
||||
Object data = getData(e);
|
||||
@ -401,7 +395,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public Object convertValueMapToCompoundTag(Map<String, Object> map) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
for(Entry<String, Object> e : map.entrySet()){
|
||||
value.put(e.getKey(), createData(e.getValue()));
|
||||
}
|
||||
@ -411,14 +405,14 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public Object convertValueListToListTag(List<Object> list) throws Exception{
|
||||
List<Object> value = new ArrayList<Object>();
|
||||
List<Object> value = new ArrayList<>();
|
||||
for(Object e : list){
|
||||
value.add(createData(e));
|
||||
}
|
||||
Object ret = getNewNBTTagList();
|
||||
nbttcm.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -474,7 +468,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
@SuppressWarnings("unchecked")
|
||||
@Deprecated
|
||||
public Object convertJSONToCompoundTag(JSONObject jo, JSONObject helper) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
Iterator<String> it = jo.keys();
|
||||
while(it.hasNext()){
|
||||
String e = it.next();
|
||||
@ -487,7 +481,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public Object convertJSONToCompoundTag(JSONObject jo) throws Exception{
|
||||
Map<String, Object> value = new HashMap<String, Object>();
|
||||
Map<String, Object> value = new HashMap<>();
|
||||
Iterator<String> it = jo.keys();
|
||||
while(it.hasNext()){
|
||||
String e = it.next();
|
||||
@ -508,7 +502,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
Object ret = getNewNBTTagList();
|
||||
nbtld.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -522,7 +516,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
Object ret = getNewNBTTagList();
|
||||
nbtld.set(ret, value);
|
||||
if(value.size() > 0){
|
||||
nbtlt.set(ret, (byte)gti.invoke(value.get(0)));
|
||||
nbtlt.set(ret, gti.invoke(value.get(0)));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
@ -743,7 +737,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
public Object createDataJSON(String key, JSONObject jo) throws Exception{
|
||||
JSONArray j = jo.getJSONArray(key);
|
||||
Object ret = null;
|
||||
int i = (int)j.getInt(0);
|
||||
int i = j.getInt(0);
|
||||
switch(i){
|
||||
case NBTConstants.TYPE_COMPOUND:
|
||||
ret = convertJSONToCompoundTag(j.getJSONObject(1));
|
||||
@ -891,7 +885,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
public Object createDataJSON(int key, JSONArray jo) throws Exception{
|
||||
JSONArray j = jo.getJSONArray(key);
|
||||
Object ret = null;
|
||||
int i = (int)j.getInt(0);
|
||||
int i = j.getInt(0);
|
||||
switch(i){
|
||||
case NBTConstants.TYPE_COMPOUND:
|
||||
ret = convertJSONToCompoundTag(j.getJSONObject(1));
|
||||
@ -972,7 +966,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
case NBTConstants.TYPE_BYTE_ARRAY:
|
||||
byte[] ba = (byte[])nbtbad.get(tag);
|
||||
byte[] ba1 = (byte[])nbtbad.get(tag1);
|
||||
return ba.equals(ba1);
|
||||
return Arrays.equals(ba, ba1);
|
||||
case NBTConstants.TYPE_STRING:
|
||||
String st = (String)nbtstd.get(tag);
|
||||
String st1 = (String)nbtstd.get(tag1);
|
||||
@ -985,7 +979,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
case NBTConstants.TYPE_INT_ARRAY:
|
||||
int[] ia = (int[])nbtiad.get(tag);
|
||||
int[] ia1 = (int[])nbtiad.get(tag);
|
||||
return ia.equals(ia1);
|
||||
return Arrays.equals(ia, ia1);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -1030,7 +1024,6 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
cont = true;
|
||||
break;
|
||||
}
|
||||
;
|
||||
}
|
||||
if(!cont)
|
||||
return false;
|
||||
@ -1041,23 +1034,18 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
public boolean compare(ItemStack is1, ItemStack is2){
|
||||
if(is1.getType().equals(is2.getType())){
|
||||
if(is1.getDurability() == is2.getDurability()){
|
||||
try{
|
||||
try {
|
||||
Object nis1 = getNMSCopy(is1);
|
||||
Object nis2 = getNMSCopy(is2);
|
||||
Object tis1 = getTag(nis1);
|
||||
Object tis2 = getTag(nis2);
|
||||
if(tis1 != null && tis2 == null){
|
||||
if(isEmpty(tis1))
|
||||
return true;
|
||||
return false;
|
||||
if (tis1 != null && tis2 == null) {
|
||||
return isEmpty(tis1);
|
||||
}
|
||||
if(tis1 == null && tis2 != null){
|
||||
if(isEmpty(tis2))
|
||||
return true;
|
||||
return false;
|
||||
if (tis1 == null && tis2 != null) {
|
||||
return isEmpty(tis2);
|
||||
}
|
||||
if(tis1 == null && tis2 == null){ return true; }
|
||||
return compareCompoundTag(tis1, tis2);
|
||||
return tis1 == null && tis2 == null || compareCompoundTag(tis1, tis2);
|
||||
}catch(Exception e){
|
||||
e.printStackTrace();
|
||||
}
|
||||
@ -1078,7 +1066,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByMaterial(List<ItemStack> items){
|
||||
Collections.sort(items, new MaterialComparator());
|
||||
items.sort(new MaterialComparator());
|
||||
}
|
||||
|
||||
public class MaterialComparator implements Comparator<ItemStack>{
|
||||
@ -1089,7 +1077,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByName(List<ItemStack> items){
|
||||
Collections.sort(items, new NameComparator());
|
||||
items.sort(new NameComparator());
|
||||
}
|
||||
|
||||
public class NameComparator implements Comparator<ItemStack>{
|
||||
@ -1106,7 +1094,7 @@ public class _194ItemUtils implements IDabItemUtils{
|
||||
}
|
||||
|
||||
public void sortByAmount(List<ItemStack> items){
|
||||
Collections.sort(items, new AmountComparator());
|
||||
items.sort(new AmountComparator());
|
||||
}
|
||||
|
||||
public class AmountComparator implements Comparator<ItemStack>{
|
||||
|
@ -4,9 +4,6 @@ import java.text.SimpleDateFormat;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
|
||||
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
|
||||
public class DateUtils {
|
||||
|
||||
/**
|
||||
|
@ -3,8 +3,6 @@ package me.skymc.taboolib.other;
|
||||
import java.text.DecimalFormat;
|
||||
import java.util.Random;
|
||||
|
||||
import me.skymc.taboolib.methods.MethodsUtils;
|
||||
|
||||
public class NumberUtils {
|
||||
|
||||
private static Random rand = new Random();
|
||||
@ -25,7 +23,7 @@ public class NumberUtils {
|
||||
|
||||
@Deprecated
|
||||
public static boolean getChance(int a) {
|
||||
return getRandom() <= a ? true : false;
|
||||
return getRandom() <= a;
|
||||
}
|
||||
|
||||
public static int getRandomInteger(Number l, Number u) {
|
||||
|
@ -1,11 +1,9 @@
|
||||
package me.skymc.taboolib.other;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
import me.skymc.taboolib.Main;
|
||||
import me.skymc.taboolib.object.WeightCategory;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class WeightUtils {
|
||||
|
||||
public static String getStringByWeight(List<WeightCategory> categorys) {
|
||||
|
@ -1,12 +1,11 @@
|
||||
package me.skymc.taboolib.packet;
|
||||
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
import com.comphenix.protocol.PacketType;
|
||||
import com.comphenix.protocol.ProtocolLibrary;
|
||||
import com.comphenix.protocol.events.PacketContainer;
|
||||
import com.comphenix.protocol.wrappers.WrappedDataWatcher;
|
||||
import org.bukkit.entity.Entity;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class PacketUtils {
|
||||
|
||||
@ -20,33 +19,35 @@ public class PacketUtils {
|
||||
packet.getIntegers().write(0, entity.getEntityId());
|
||||
WrappedDataWatcher watcher = new WrappedDataWatcher();
|
||||
WrappedDataWatcher.Serializer serializer = WrappedDataWatcher.Registry.get(Byte.class);
|
||||
if (status == EntityStatus.FIRE) {
|
||||
watcher.setObject(0, serializer, (byte) 0x01);
|
||||
}
|
||||
else if (status == EntityStatus.CROUCHED) {
|
||||
watcher.setObject(0, serializer, (byte) 0x02);
|
||||
}
|
||||
else if (status == EntityStatus.UNUSED1) {
|
||||
watcher.setObject(0, serializer, (byte) 0x04);
|
||||
}
|
||||
else if (status == EntityStatus.SPRINTING) {
|
||||
watcher.setObject(0, serializer, (byte) 0x08);
|
||||
}
|
||||
else if (status == EntityStatus.UNUSED2) {
|
||||
watcher.setObject(0, serializer, (byte) 0x10);
|
||||
}
|
||||
else if (status == EntityStatus.INVISIBLE) {
|
||||
watcher.setObject(0, serializer, (byte) 0x20);
|
||||
}
|
||||
else if (status == EntityStatus.GLOWING) {
|
||||
watcher.setObject(0, serializer, (byte) 0x40);
|
||||
}
|
||||
else if (status == EntityStatus.ELYTRA) {
|
||||
watcher.setObject(0, serializer, (byte) 0x80);
|
||||
}
|
||||
else {
|
||||
watcher.setObject(0, serializer, (byte) 0x00);
|
||||
}
|
||||
switch (status) {
|
||||
case FIRE:
|
||||
watcher.setObject(0, serializer, (byte) 0x01);
|
||||
break;
|
||||
case CROUCHED:
|
||||
watcher.setObject(0, serializer, (byte) 0x02);
|
||||
break;
|
||||
case UNUSED1:
|
||||
watcher.setObject(0, serializer, (byte) 0x04);
|
||||
break;
|
||||
case SPRINTING:
|
||||
watcher.setObject(0, serializer, (byte) 0x08);
|
||||
break;
|
||||
case UNUSED2:
|
||||
watcher.setObject(0, serializer, (byte) 0x10);
|
||||
break;
|
||||
case INVISIBLE:
|
||||
watcher.setObject(0, serializer, (byte) 0x20);
|
||||
break;
|
||||
case GLOWING:
|
||||
watcher.setObject(0, serializer, (byte) 0x40);
|
||||
break;
|
||||
case ELYTRA:
|
||||
watcher.setObject(0, serializer, (byte) 0x80);
|
||||
break;
|
||||
default:
|
||||
watcher.setObject(0, serializer, (byte) 0x00);
|
||||
break;
|
||||
}
|
||||
packet.getWatchableCollectionModifier().write(0, watcher.getWatchableObjects());
|
||||
try {
|
||||
for (Player player : players) {
|
||||
|
@ -1,5 +1,7 @@
|
||||
package me.skymc.taboolib.particle;
|
||||
|
||||
import me.skymc.taboolib.methods.ReflectionUtils;
|
||||
import me.skymc.taboolib.methods.ReflectionUtils.PackageType;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.Location;
|
||||
@ -7,9 +9,6 @@ import org.bukkit.Material;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.util.Vector;
|
||||
|
||||
import me.skymc.taboolib.methods.ReflectionUtils;
|
||||
import me.skymc.taboolib.methods.ReflectionUtils.PackageType;
|
||||
|
||||
import java.lang.reflect.Constructor;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
@ -406,8 +405,8 @@ public enum EffLib {
|
||||
*/
|
||||
SWEEP_ATTACK("sweepAttack", 45, 9);
|
||||
|
||||
private static final Map<String, EffLib> NAME_MAP = new HashMap<String, EffLib>();
|
||||
private static final Map<Integer, EffLib> ID_MAP = new HashMap<Integer, EffLib>();
|
||||
private static final Map<String, EffLib> NAME_MAP = new HashMap<>();
|
||||
private static final Map<Integer, EffLib> ID_MAP = new HashMap<>();
|
||||
private final String name;
|
||||
private final int id;
|
||||
private final int requiredVersion;
|
||||
@ -429,7 +428,7 @@ public enum EffLib {
|
||||
* @param requiredVersion Version which is required (1.x)
|
||||
* @param properties Properties of this particle effect
|
||||
*/
|
||||
private EffLib(String name, int id, int requiredVersion, ParticleProperty... properties) {
|
||||
EffLib(String name, int id, int requiredVersion, ParticleProperty... properties) {
|
||||
this.name = name;
|
||||
this.id = id;
|
||||
this.requiredVersion = requiredVersion;
|
||||
@ -478,10 +477,7 @@ public enum EffLib {
|
||||
* @return Whether the particle effect is supported or not
|
||||
*/
|
||||
public boolean isSupported() {
|
||||
if (requiredVersion == -1) {
|
||||
return true;
|
||||
}
|
||||
return ParticlePacket.getVersion() >= requiredVersion;
|
||||
return requiredVersion == -1 || ParticlePacket.getVersion() >= requiredVersion;
|
||||
}
|
||||
|
||||
/**
|
||||
@ -933,7 +929,7 @@ public enum EffLib {
|
||||
* @author DarkBlade12
|
||||
* @since 1.7
|
||||
*/
|
||||
public static enum ParticleProperty {
|
||||
public enum ParticleProperty {
|
||||
/**
|
||||
* The particle effect requires water to be displayed
|
||||
*/
|
||||
@ -949,7 +945,7 @@ public enum EffLib {
|
||||
/**
|
||||
* The particle effect uses the offsets as color values
|
||||
*/
|
||||
COLORABLE;
|
||||
COLORABLE
|
||||
}
|
||||
|
||||
/**
|
||||
@ -1393,7 +1389,6 @@ public enum EffLib {
|
||||
* @param longDistance Indicates whether the maximum distance is increased from 256 to 65536
|
||||
* @param data Data of the effect
|
||||
* @throws IllegalArgumentException If the speed is lower than 0
|
||||
* @see #ParticleEffect(ParticleEffect, float, float, float, float, int, boolean, ParticleData)
|
||||
*/
|
||||
public ParticlePacket(EffLib effect, Vector direction, float speed, boolean longDistance, ParticleData data) throws IllegalArgumentException {
|
||||
this(effect, (float) direction.getX(), (float) direction.getY(), (float) direction.getZ(), speed, 0, longDistance, data);
|
||||
@ -1405,7 +1400,6 @@ public enum EffLib {
|
||||
* @param effect Particle effect
|
||||
* @param color Color of the particle
|
||||
* @param longDistance Indicates whether the maximum distance is increased from 256 to 65536
|
||||
* @see #ParticleEffect(ParticleEffect, float, float, float, float, int, boolean, ParticleData)
|
||||
*/
|
||||
public ParticlePacket(EffLib effect, ParticleColor color, boolean longDistance) {
|
||||
this(effect, color.getValueX(), color.getValueY(), color.getValueZ(), 1, 0, longDistance, null);
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user