From 483bba8f0ab5a775f29799b666ec8e2cefd3a626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=9D=8F=E9=BB=91?= Date: Mon, 24 Jun 2019 16:59:45 +0800 Subject: [PATCH] 1.14 supported --- build.gradle | 3 +- src/main/resources/Addons/TabooLibDeprecated | Bin 429583 -> 426873 bytes src/main/resources/plugin.yml | 1 + src/main/scala/com/ilummc/tlib/TLib.java | 2 +- .../me/skymc/taboolib/common/io/IOUtils.java | 83 ++++++++++++++++++ .../taboolib/common/nms/NMSHandlerImpl.java | 10 ++- .../taboolib/common/util/SimpleI18n.java | 17 +++- .../skymc/taboolib/fileutils/FileUtils.java | 2 +- 8 files changed, 111 insertions(+), 7 deletions(-) create mode 100644 src/main/scala/me/skymc/taboolib/common/io/IOUtils.java diff --git a/build.gradle b/build.gradle index f685b5a..c67f34b 100644 --- a/build.gradle +++ b/build.gradle @@ -5,7 +5,7 @@ plugins { id 'com.github.johnrengelman.shadow' version '4.0.4' } group = 'me.skymc' -version = '4.84' +version = '4.85' sourceCompatibility = 1.8 targetCompatibility = 1.8 @@ -27,6 +27,7 @@ dependencies { exclude(module: 'slf4j-log4j12') exclude(module: 'log4j') } + compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.8' shadow group: 'com.zaxxer', name: 'HikariCP', version: '3.1.0' shadow group: 'org.javalite', name: 'activejdbc', version: '2.0' compile group: 'org.ow2.asm', name: 'asm', version: '7.0-beta' diff --git a/src/main/resources/Addons/TabooLibDeprecated b/src/main/resources/Addons/TabooLibDeprecated index d4d77da0e4bf487191809a45be9ddae7ebb86e99..817fe8ff57ec2c1d411ff664740b743cac4334f0 100644 GIT binary patch delta 18892 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 delta 21286 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 k plugin != Main.getInst()).forEach(plugin -> TDependencyInjector.inject(plugin, plugin)); return; } diff --git a/src/main/scala/me/skymc/taboolib/common/io/IOUtils.java b/src/main/scala/me/skymc/taboolib/common/io/IOUtils.java new file mode 100644 index 0000000..49f3da8 --- /dev/null +++ b/src/main/scala/me/skymc/taboolib/common/io/IOUtils.java @@ -0,0 +1,83 @@ +package me.skymc.taboolib.common.io; + +import java.io.*; +import java.net.HttpURLConnection; +import java.net.ServerSocket; +import java.net.Socket; +import java.net.URLConnection; +import java.nio.channels.Selector; + +/** + * from org.apache.commons.io + * support for 1.14 + */ +public class IOUtils { + + public static void close(URLConnection v) { + if (v instanceof HttpURLConnection) { + ((HttpURLConnection)v).disconnect(); + } + } + + public static void closeQuietly(Reader v) { + closeQuietly((Closeable)v); + } + + public static void closeQuietly(Writer v) { + closeQuietly((Closeable)v); + } + + public static void closeQuietly(InputStream v) { + closeQuietly((Closeable)v); + } + + public static void closeQuietly(OutputStream v) { + closeQuietly((Closeable)v); + } + + public static void closeQuietly(Closeable v) { + try { + if (v != null) { + v.close(); + } + } catch (IOException ignored) { + } + } + + public static void closeQuietly(Closeable... v) { + if (v != null) { + int var2 = v.length; + for (Closeable var4 : v) { + closeQuietly(var4); + } + } + } + + public static void closeQuietly(Socket v) { + if (v != null) { + try { + v.close(); + } catch (IOException ignored) { + } + } + + } + + public static void closeQuietly(Selector v) { + if (v != null) { + try { + v.close(); + } catch (IOException ignored) { + } + } + } + + public static void closeQuietly(ServerSocket v) { + if (v != null) { + try { + v.close(); + } catch (IOException ignored) { + } + } + } +} diff --git a/src/main/scala/me/skymc/taboolib/common/nms/NMSHandlerImpl.java b/src/main/scala/me/skymc/taboolib/common/nms/NMSHandlerImpl.java index 99979d1..c35bb0c 100644 --- a/src/main/scala/me/skymc/taboolib/common/nms/NMSHandlerImpl.java +++ b/src/main/scala/me/skymc/taboolib/common/nms/NMSHandlerImpl.java @@ -73,10 +73,16 @@ public class NMSHandlerImpl extends NMSHandler { name += ".effect." + ((net.minecraft.server.v1_8_R3.ItemStack) nmsItem).getTag().getString("Potion").replaceAll("minecraft:(strong_|long_)?", ""); } return name; - } else { + } else if (TabooLib.getVersionNumber() >= 11100) { String name = ((net.minecraft.server.v1_12_R1.ItemStack) nmsItem).getItem().a((net.minecraft.server.v1_12_R1.ItemStack) nmsItem); if (itemStack.getItemMeta() instanceof PotionMeta) { - return name.replace("item.", "") + ".effect." + ((net.minecraft.server.v1_8_R3.ItemStack) nmsItem).getTag().getString("Potion").replaceAll("minecraft:(strong_|long_)?", ""); + return name.replace("item.", "") + ".effect." + ((net.minecraft.server.v1_8_R3.ItemStack) nmsItem).getTag().getString("Potion").replaceAll("(minecraft:)?(strong_|long_)?", ""); + } + return name + ".name"; + } else { + String name = ((net.minecraft.server.v1_8_R3.ItemStack) nmsItem).getItem().getName(); + if (itemStack.getItemMeta() instanceof PotionMeta) { + return name.replace("item.", "") + ".effect." + ((net.minecraft.server.v1_8_R3.ItemStack) nmsItem).getTag().getString("Potion").replaceAll("(minecraft:)?(strong_|long_)?", ""); } return name + ".name"; } diff --git a/src/main/scala/me/skymc/taboolib/common/util/SimpleI18n.java b/src/main/scala/me/skymc/taboolib/common/util/SimpleI18n.java index 4b4066e..7cb28dd 100644 --- a/src/main/scala/me/skymc/taboolib/common/util/SimpleI18n.java +++ b/src/main/scala/me/skymc/taboolib/common/util/SimpleI18n.java @@ -5,12 +5,14 @@ import me.skymc.taboolib.Main; import me.skymc.taboolib.TabooLib; import me.skymc.taboolib.common.function.TFunction; import me.skymc.taboolib.common.nms.NMSHandler; +import me.skymc.taboolib.common.nms.nbt.NBTCompound; import me.skymc.taboolib.fileutils.ConfigUtils; import me.skymc.taboolib.fileutils.FileUtils; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.entity.Entity; import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.BookMeta; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SpawnEggMeta; import org.bukkit.plugin.Plugin; @@ -62,8 +64,19 @@ public class SimpleI18n { if (item == null) { return "-"; } - if (TabooLib.getVersionNumber() < 11300) { - ItemMeta itemMeta = item.getItemMeta(); + ItemMeta itemMeta = item.getItemMeta(); + if (itemMeta instanceof BookMeta && ((BookMeta) itemMeta).getTitle() != null) { + return ((BookMeta) itemMeta).getTitle(); + } + if (TabooLib.getVersionNumber() < 11100) { + if (item.getType().name().equals("MONSTER_EGG")) { + NBTCompound nbtCompound = NMSHandler.getHandler().loadNBT(item); + if (nbtCompound.containsKey("EntityTag")) { + return lang.getString("item_monsterPlacer_name") + " " + lang.getString("entity_" + nbtCompound.get("EntityTag").asCompound().get("id").asString() + "_name"); + } + return lang.getString("item_monsterPlacer_name"); + } + } else if (TabooLib.getVersionNumber() < 11300) { if (itemMeta instanceof SpawnEggMeta) { String spawnEggType = lang.getString("entity_" + ((SpawnEggMeta) itemMeta).getSpawnedType().getEntityClass().getSimpleName().replace(".", "_") + "_name"); if (spawnEggType != null) { diff --git a/src/main/scala/me/skymc/taboolib/fileutils/FileUtils.java b/src/main/scala/me/skymc/taboolib/fileutils/FileUtils.java index 104a0a3..c16ab30 100644 --- a/src/main/scala/me/skymc/taboolib/fileutils/FileUtils.java +++ b/src/main/scala/me/skymc/taboolib/fileutils/FileUtils.java @@ -5,7 +5,7 @@ import com.ilummc.eagletdl.EagletTask; import com.ilummc.eagletdl.ProgressEvent; import com.ilummc.tlib.resources.TLocale; import me.skymc.taboolib.Main; -import org.apache.commons.io.IOUtils; +import me.skymc.taboolib.common.io.IOUtils; import org.bukkit.plugin.Plugin; import java.io.*;