diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml index 1c9a468..546e6e1 100644 --- a/.github/workflows/maven.yml +++ b/.github/workflows/maven.yml @@ -15,12 +15,12 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 - - name: Set up JDK 17 - uses: actions/setup-java@v2 - with: - java-version: '17' - distribution: 'temurin' - cache: maven - - name: Build with Maven - run: mvn -B package --file pom.xml + - uses: actions/checkout@v2 + - name: Set up JDK 17 + uses: actions/setup-java@v2 + with: + java-version: '17' + distribution: 'temurin' + cache: maven + - name: Build with Maven + run: mvn -B package --file pom.xml diff --git a/.idea/libraries/Maven__com_arcaniax_HeadDatabase_API_1_3_0.xml b/.idea/libraries/Maven__com_arcaniax_HeadDatabase_API_1_3_0.xml deleted file mode 100644 index d783d18..0000000 --- a/.idea/libraries/Maven__com_arcaniax_HeadDatabase_API_1_3_0.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_2_0_1.xml similarity index 63% rename from .idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml rename to .idea/libraries/Maven__com_google_code_findbugs_jsr305_2_0_1.xml index 1c380d0..dd1dc9f 100644 --- a/.idea/libraries/Maven__com_google_code_findbugs_jsr305_3_0_2.xml +++ b/.idea/libraries/Maven__com_google_code_findbugs_jsr305_2_0_1.xml @@ -1,13 +1,13 @@ - + - + - + - + \ No newline at end of file diff --git a/.idea/libraries/Maven__com_mojang_authlib_1_5_25.xml b/.idea/libraries/Maven__com_mojang_authlib_1_5_25.xml new file mode 100644 index 0000000..96ddf02 --- /dev/null +++ b/.idea/libraries/Maven__com_mojang_authlib_1_5_25.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml b/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml new file mode 100644 index 0000000..27424a1 --- /dev/null +++ b/.idea/libraries/Maven__commons_codec_commons_codec_1_10.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__commons_io_commons_io_2_4.xml b/.idea/libraries/Maven__commons_io_commons_io_2_4.xml new file mode 100644 index 0000000..bc2aad0 --- /dev/null +++ b/.idea/libraries/Maven__commons_io_commons_io_2_4.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml new file mode 100644 index 0000000..666266c --- /dev/null +++ b/.idea/libraries/Maven__org_apache_commons_commons_lang3_3_5.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_8_1.xml b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_8_1.xml new file mode 100644 index 0000000..2df6c00 --- /dev/null +++ b/.idea/libraries/Maven__org_apache_logging_log4j_log4j_core_2_8_1.xml @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/Natunology.iml b/Natunology.iml index 9dc7e15..370754e 100644 --- a/Natunology.iml +++ b/Natunology.iml @@ -15,7 +15,6 @@ - @@ -38,6 +37,11 @@ - + + + + + + \ No newline at end of file diff --git a/pom.xml b/pom.xml index cb2bc4b..d34c848 100644 --- a/pom.xml +++ b/pom.xml @@ -1,7 +1,7 @@ - 4.0.0 @@ -14,7 +14,7 @@ me.xiaozhangup.natunology Natunology Natunology - 1.1.0 + 1.1.2 @@ -24,11 +24,12 @@ provided - com.arcaniax - HeadDatabase-API - 1.3.0 + com.mojang + authlib + 1.5.25 provided + diff --git a/src/main/java/me/xiaozhangup/natunology/Main.java b/src/main/java/me/xiaozhangup/natunology/Main.java index afc3d80..8e248bd 100644 --- a/src/main/java/me/xiaozhangup/natunology/Main.java +++ b/src/main/java/me/xiaozhangup/natunology/Main.java @@ -1,8 +1,6 @@ package me.xiaozhangup.natunology; import me.xiaozhangup.natunology.commands.Commands; -import me.xiaozhangup.natunology.event.BlockHolo; -import me.xiaozhangup.natunology.event.Invkeep; import me.xiaozhangup.natunology.event.MovePart; import me.xiaozhangup.natunology.techcore.events.Books; import me.xiaozhangup.natunology.techcore.views.MainTap; @@ -10,8 +8,6 @@ import org.bukkit.plugin.Plugin; import org.bukkit.plugin.java.JavaPlugin; -import java.awt.print.Book; - public class Main extends JavaPlugin { public static Plugin plugin; @@ -27,15 +23,15 @@ public void onEnable() { if (getConfig().getBoolean("Step.enable")) { MovePart.runStep(); - Bukkit.getPluginManager().registerEvents(new MovePart() , this); + Bukkit.getPluginManager().registerEvents(new MovePart(), this); getLogger().info("Step Loaded!"); } Commands.regCommands(); getLogger().info("Commands Loaded!"); - Bukkit.getPluginManager().registerEvents(new Books() , this); - Bukkit.getPluginManager().registerEvents(new MainTap() , this); + Bukkit.getPluginManager().registerEvents(new Books(), this); + Bukkit.getPluginManager().registerEvents(new MainTap(), this); // if (getConfig().getBoolean("Dead.enable")) { // Bukkit.getPluginManager().registerEvents(new Invkeep() , this); diff --git a/src/main/java/me/xiaozhangup/natunology/api/Holo.java b/src/main/java/me/xiaozhangup/natunology/api/Holo.java index 89e3112..cbe33ad 100644 --- a/src/main/java/me/xiaozhangup/natunology/api/Holo.java +++ b/src/main/java/me/xiaozhangup/natunology/api/Holo.java @@ -8,10 +8,10 @@ public class Holo { - public static void createHoloTime(String s , Location loc , int i) { + public static void createHoloTime(String s, Location loc, int i) { loc.setX(loc.getX() + 0.5); loc.setZ(loc.getZ() + 0.5); - AreaEffectCloud flag = (AreaEffectCloud) (loc.getWorld().spawnEntity(loc , EntityType.AREA_EFFECT_CLOUD)); + AreaEffectCloud flag = (AreaEffectCloud) (loc.getWorld().spawnEntity(loc, EntityType.AREA_EFFECT_CLOUD)); flag.setRadius(-10.0F); flag.setParticle(Particle.ASH); flag.setCustomName(s); diff --git a/src/main/java/me/xiaozhangup/natunology/api/Message.java b/src/main/java/me/xiaozhangup/natunology/api/Message.java index 1757ef4..5982bf2 100644 --- a/src/main/java/me/xiaozhangup/natunology/api/Message.java +++ b/src/main/java/me/xiaozhangup/natunology/api/Message.java @@ -1,18 +1,15 @@ package me.xiaozhangup.natunology.api; -import com.sun.org.apache.xerces.internal.xs.StringList; import org.bukkit.entity.Player; -import java.util.List; - public class Message { - public static void send(Player p , String s) { - p.sendMessage(s.replace("&" , getCode())); + public static void send(Player p, String s) { + p.sendMessage(s.replace("&", getCode())); } - public static void send(Player p , String... s) { + public static void send(Player p, String... s) { for (String message : s) { - p.sendMessage(message.replace("&" , getCode())); + p.sendMessage(message.replace("&", getCode())); } } @@ -21,6 +18,6 @@ public static String getCode() { } public static String color(String s) { - return s.replace("&" , getCode()); + return s.replace("&", getCode()); } } diff --git a/src/main/java/me/xiaozhangup/natunology/api/NString.java b/src/main/java/me/xiaozhangup/natunology/api/NString.java index 4f88a05..aff92ec 100644 --- a/src/main/java/me/xiaozhangup/natunology/api/NString.java +++ b/src/main/java/me/xiaozhangup/natunology/api/NString.java @@ -10,7 +10,7 @@ public class NString { public static List toStringlist(String... s) { List strings = new ArrayList<>(); for (String string : s) { - strings.add(string.replace("&" , getCode())); + strings.add(string.replace("&", getCode())); } return strings; } diff --git a/src/main/java/me/xiaozhangup/natunology/commands/Commands.java b/src/main/java/me/xiaozhangup/natunology/commands/Commands.java index 9a85296..a852ec3 100644 --- a/src/main/java/me/xiaozhangup/natunology/commands/Commands.java +++ b/src/main/java/me/xiaozhangup/natunology/commands/Commands.java @@ -14,15 +14,15 @@ public static void regCommands() { Player p = (Player) commandSender; try { if (inside[0].equals("version")) { - Message.send(p , " ", - " &7&lNatunology HAPPYLAND" , - " &f运行时版本: &7" + Bukkit.getPluginManager().getPlugin(Main.plugin.getName()).getDescription().getVersion() , + Message.send(p, " ", + " &7&lNatunology HAPPYLAND", + " &f运行时版本: &7" + Bukkit.getPluginManager().getPlugin(Main.plugin.getName()).getDescription().getVersion(), " &f开发者: &7" + Bukkit.getPluginManager().getPlugin("Natunology").getDescription().getAuthors(), " &f自述信息: &7" + Bukkit.getPluginManager().getPlugin("Natunology").getDescription().getDescription(), " &c&l开放源代码 &7https://github.com/xiaozhangup/Natunology", " "); } else if (inside[0].equals("help")) { - Message.send(p , " ", + Message.send(p, " ", " &f&lNatunology 命令帮助", " &7&lCode By HAPPYLAND Team", " ", @@ -35,27 +35,32 @@ public static void regCommands() { " &7/ntg reload - &c重载配置文件(不安全)", " "); } else if (inside[0].equals("reload")) { - try { - Main.plugin.reloadConfig(); - Message.send(p , "&f[&7科技&f] &a重载已完成,没有错误!"); - } catch (Exception e) { - Message.send(p , "&f[&7科技&f] 重载可能已执行,但是 &c" + e.getMessage()); + if (p.isOp()) { + try { + Main.plugin.reloadConfig(); + Message.send(p, "&f[&7科技&f] &a重载已完成,没有错误!"); + } catch (Exception e) { + Message.send(p, "&f[&7科技&f] 重载可能已执行,但是 &c" + e.getMessage()); + } + } else { + Message.send(p, "&f[&7科技&f] &c你没有权限执行这个命令"); } + } else if (inside[0].equals("book")) { p.getInventory().addItem(Items.guide()); } else if (inside[0].equals("getid")) { try { - Message.send(p , "&f[&7科技&f] 这个物品的NTGID是: " + p.getInventory().getItemInMainHand().getItemMeta().getCustomModelData()); + Message.send(p, "&f[&7科技&f] 这个物品的NTGID是: " + p.getInventory().getItemInMainHand().getItemMeta().getCustomModelData()); } catch (Exception e) { - Message.send(p , "&f[&7科技&f] &c这个物品没有 NTGID"); + Message.send(p, "&f[&7科技&f] &c这个物品没有 NTGID"); } } else if (inside[0].equals("guide")) { MainTap.openMainTap(p); } else { - Message.send(p , "&f[&7科技&f] &c没有这个命令!" , "&f[&7科技&f] 输入/ntg help 查看帮助"); + Message.send(p, "&f[&7科技&f] &c没有这个命令!", "&f[&7科技&f] 输入/ntg help 查看帮助"); } } catch (Exception e) { - Message.send(p , "&f[&7科技&f] 执行命令时遇到错误! 内容: &c" + e.getMessage() , "&f[&7科技&f] 输入/ntg help 查看帮助"); + Message.send(p, "&f[&7科技&f] 执行命令时遇到错误! 内容: &c" + e.getMessage(), "&f[&7科技&f] 输入/ntg help 查看帮助"); } return false; }); diff --git a/src/main/java/me/xiaozhangup/natunology/event/BlockHolo.java b/src/main/java/me/xiaozhangup/natunology/event/BlockHolo.java index 18d54b1..2d5b37e 100644 --- a/src/main/java/me/xiaozhangup/natunology/event/BlockHolo.java +++ b/src/main/java/me/xiaozhangup/natunology/event/BlockHolo.java @@ -9,6 +9,6 @@ public class BlockHolo implements Listener { @EventHandler public void onBlockPlace(BlockPlaceEvent e) { - Holo.createHoloTime(e.getBlock().getBlockData().getMaterial().toString() , e.getBlock().getLocation(), 20); + Holo.createHoloTime(e.getBlock().getBlockData().getMaterial().toString(), e.getBlock().getLocation(), 20); } } diff --git a/src/main/java/me/xiaozhangup/natunology/event/Invkeep.java b/src/main/java/me/xiaozhangup/natunology/event/Invkeep.java index 1c68d8d..af89491 100644 --- a/src/main/java/me/xiaozhangup/natunology/event/Invkeep.java +++ b/src/main/java/me/xiaozhangup/natunology/event/Invkeep.java @@ -12,13 +12,13 @@ public class Invkeep implements Listener { @EventHandler public void onWorldLoad(WorldLoadEvent e) { - e.getWorld().setGameRule(GameRule.KEEP_INVENTORY , true); + e.getWorld().setGameRule(GameRule.KEEP_INVENTORY, true); } @EventHandler public void onPlayerJoin(PlayerJoinEvent e) { for (World world : Bukkit.getWorlds()) { - world.setGameRule(GameRule.KEEP_INVENTORY , true); + world.setGameRule(GameRule.KEEP_INVENTORY, true); } } } diff --git a/src/main/java/me/xiaozhangup/natunology/event/MovePart.java b/src/main/java/me/xiaozhangup/natunology/event/MovePart.java index 56d6d9b..a4e70e1 100644 --- a/src/main/java/me/xiaozhangup/natunology/event/MovePart.java +++ b/src/main/java/me/xiaozhangup/natunology/event/MovePart.java @@ -15,7 +15,7 @@ public class MovePart implements Listener { public static void runStep() { - Bukkit.getScheduler().runTaskTimer(Main.plugin , () -> { + Bukkit.getScheduler().runTaskTimer(Main.plugin, () -> { for (Player p : Bukkit.getOnlinePlayers()) { Location location = p.getLocation(); location.setY(location.getY() - 1D); @@ -26,7 +26,7 @@ public static void runStep() { return; } location.setY(p.getLocation().toBlockLocation().getY() - Main.plugin.getConfig().getDouble("Step.size")); - ArmorStand armorStand = (ArmorStand) location.getWorld().spawnEntity(location , EntityType.ARMOR_STAND); + ArmorStand armorStand = (ArmorStand) location.getWorld().spawnEntity(location, EntityType.ARMOR_STAND); armorStand.setVisible(false); armorStand.setSmall(true); armorStand.setCanMove(false); @@ -34,11 +34,11 @@ public static void runStep() { armorStand.setCanPickupItems(false); armorStand.setHelmet(new ItemStack(location.getBlock().getBlockData().getMaterial())); - Bukkit.getScheduler().runTaskLater(Main.plugin , () -> { + Bukkit.getScheduler().runTaskLater(Main.plugin, () -> { armorStand.remove(); - } , 50L); + }, 50L); } - } , 1L , 16L); + }, 1L, 16L); } @EventHandler diff --git a/src/main/java/me/xiaozhangup/natunology/techcore/events/Books.java b/src/main/java/me/xiaozhangup/natunology/techcore/events/Books.java index c5c25f4..e7ff19f 100644 --- a/src/main/java/me/xiaozhangup/natunology/techcore/events/Books.java +++ b/src/main/java/me/xiaozhangup/natunology/techcore/events/Books.java @@ -1,6 +1,5 @@ package me.xiaozhangup.natunology.techcore.events; -import me.xiaozhangup.natunology.api.Message; import me.xiaozhangup.natunology.techcore.views.MainTap; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; diff --git a/src/main/java/me/xiaozhangup/natunology/techcore/items/Items.java b/src/main/java/me/xiaozhangup/natunology/techcore/items/Items.java index 658d105..757fafe 100644 --- a/src/main/java/me/xiaozhangup/natunology/techcore/items/Items.java +++ b/src/main/java/me/xiaozhangup/natunology/techcore/items/Items.java @@ -1,28 +1,99 @@ package me.xiaozhangup.natunology.techcore.items; +import com.mojang.authlib.GameProfile; +import com.mojang.authlib.properties.Property; +import com.sun.org.apache.xerces.internal.xs.StringList; import me.xiaozhangup.natunology.api.Message; import me.xiaozhangup.natunology.api.NString; import org.bukkit.Material; -import org.bukkit.entity.Item; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.SkullMeta; +import java.lang.reflect.Field; import java.util.HashMap; import java.util.UUID; public class Items { - HashMap itemStackHashMap = new HashMap<>(); + HashMap itemStackHashMap = new HashMap<>(); public static ItemStack guide() { ItemStack itemStack = new ItemStack(Material.BOOK); ItemMeta itemMeta = itemStack.getItemMeta(); itemMeta.setCustomModelData(1); itemMeta.setDisplayName(Message.color("&7Natunology 指导书")); - itemMeta.setLore(NString.toStringlist(" " , "&f右键单击打开书本" , "&e技术 物品 工具")); + itemMeta.setLore(NString.toStringlist(" ", "&f右键单击打开书本", "&e技术 物品 工具")); itemStack.setItemMeta(itemMeta); return itemStack; } + public static ItemStack board() { + ItemStack itemStack = new ItemStack(Material.BLACK_STAINED_GLASS_PANE); + ItemMeta itemMeta = itemStack.getItemMeta(); + itemMeta.setDisplayName(" "); + itemStack.setItemMeta(itemMeta); + return itemStack; + } + + public static ItemStack getSkull(String base64, String name, StringList stringList) { + ItemStack rightArrowSkull = new ItemStack(Material.PLAYER_HEAD, 1, (short) 3); + SkullMeta rightArrowSkullMeta = (SkullMeta) rightArrowSkull.getItemMeta(); + GameProfile profile = new GameProfile(UUID.randomUUID(), ""); + profile.getProperties().put("textures", new Property("textures", + base64)); + Field profileField = null; + try { + profileField = rightArrowSkullMeta.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + profileField.set(rightArrowSkullMeta, profile); + } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) { + e.printStackTrace(); + } + + rightArrowSkullMeta.setDisplayName(Message.color(name)); + rightArrowSkullMeta.setLore(stringList); + rightArrowSkull.setItemMeta(rightArrowSkullMeta); + return rightArrowSkull; + } + + public static ItemStack getSkull(String base64, String name) { + ItemStack rightArrowSkull = new ItemStack(Material.PLAYER_HEAD, 1, (short) 3); + SkullMeta rightArrowSkullMeta = (SkullMeta) rightArrowSkull.getItemMeta(); + GameProfile profile = new GameProfile(UUID.randomUUID(), ""); + profile.getProperties().put("textures", new Property("textures", + base64)); + Field profileField = null; + try { + profileField = rightArrowSkullMeta.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + profileField.set(rightArrowSkullMeta, profile); + } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) { + e.printStackTrace(); + } + + rightArrowSkullMeta.setDisplayName(Message.color(name)); + rightArrowSkull.setItemMeta(rightArrowSkullMeta); + return rightArrowSkull; + } + + public static ItemStack getSkull(String base64) { + ItemStack rightArrowSkull = new ItemStack(Material.PLAYER_HEAD, 1, (short) 3); + SkullMeta rightArrowSkullMeta = (SkullMeta) rightArrowSkull.getItemMeta(); + GameProfile profile = new GameProfile(UUID.randomUUID(), ""); + profile.getProperties().put("textures", new Property("textures", + base64)); + Field profileField = null; + try { + profileField = rightArrowSkullMeta.getClass().getDeclaredField("profile"); + profileField.setAccessible(true); + profileField.set(rightArrowSkullMeta, profile); + } catch (IllegalArgumentException | IllegalAccessException | NoSuchFieldException | SecurityException e) { + e.printStackTrace(); + } + + rightArrowSkull.setItemMeta(rightArrowSkullMeta); + return rightArrowSkull; + } + } diff --git a/src/main/java/me/xiaozhangup/natunology/techcore/views/MainTap.java b/src/main/java/me/xiaozhangup/natunology/techcore/views/MainTap.java index a98aeba..8fd9757 100644 --- a/src/main/java/me/xiaozhangup/natunology/techcore/views/MainTap.java +++ b/src/main/java/me/xiaozhangup/natunology/techcore/views/MainTap.java @@ -1,6 +1,8 @@ package me.xiaozhangup.natunology.techcore.views; import me.xiaozhangup.natunology.api.Message; +import me.xiaozhangup.natunology.api.NString; +import me.xiaozhangup.natunology.techcore.items.Items; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -8,11 +10,31 @@ import org.bukkit.event.inventory.InventoryClickEvent; import org.bukkit.inventory.Inventory; import org.bukkit.inventory.InventoryHolder; +import org.bukkit.inventory.ItemStack; +import org.bukkit.inventory.meta.ItemMeta; public class MainTap implements Listener { public static void openMainTap(Player p) { - Inventory inventory = Bukkit.createInventory(new Menukey() , 54 , Message.color("&8&lNatunology 指导书")); + Inventory inventory = Bukkit.createInventory(new Menukey(), 54, Message.color("&8&lNatunology 指导书")); + + for (int i = 0; i <= 8; i++) { + inventory.setItem(i, Items.board()); + } + for (int i = 45; i <= 53; i++) { + inventory.setItem(i, Items.board()); + } + + ItemStack info = Items.getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTAzNmMwZjA0OTM2OTkxYjVhYTAyNzFjZDdmMmZmMjhkOWMzNzRiNTg2YTVkZGUxM2E1ZjRiYzU0NWU5M2UyMSJ9fX0="); + ItemMeta meta = info.getItemMeta(); + meta.setDisplayName(Message.color("&fNatunology 相关")); + meta.setLore(NString.toStringlist("", "&7查阅插件相关的情况")); + meta.setCustomModelData(2); + info.setItemMeta(meta); + + + inventory.setItem(44, info); + p.openInventory(inventory); } @@ -21,7 +43,7 @@ public void onInvClick(InventoryClickEvent e) { if (!(e.getWhoClicked() instanceof Player)) return; Player player = (Player) e.getWhoClicked(); InventoryHolder holder = player.getOpenInventory().getTopInventory().getHolder(); - if(holder instanceof Menukey) { + if (holder instanceof Menukey) { e.setCancelled(true); } } diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 0ba37e4..977ebf1 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,12 +1,10 @@ name: Natunology main: me.xiaozhangup.natunology.Main -version: 1.1.0 +version: 1.1.2 api-version: 1.13 authors: - xiaozhangup description: Happyland pack -depend: - - HeadDatabase commands: natunology: - aliases: [ntg] \ No newline at end of file + aliases: [ ntg ] \ No newline at end of file