版本更新至 3.82
新增:/tlib sounds 命令打开音效库
This commit is contained in:
		@@ -18,6 +18,7 @@ import me.skymc.taboolib.client.LogClient;
 | 
			
		||||
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.economy.EcoUtils;
 | 
			
		||||
@@ -307,6 +308,8 @@ public class Main extends JavaPlugin implements Listener {
 | 
			
		||||
		getServer().getPluginManager().registerEvents(new ListenerPluginDisable(), this);
 | 
			
		||||
		getServer().getPluginManager().registerEvents(new PlayerDataManager(), this);
 | 
			
		||||
		getServer().getPluginManager().registerEvents(new ItemLibraryPatch(), this);
 | 
			
		||||
		getServer().getPluginManager().registerEvents(new SoundsLibraryPatch(), this);
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		if (TabooLib.getVerint() > 10700) {
 | 
			
		||||
			getServer().getPluginManager().registerEvents(new EntityUtils(), this);
 | 
			
		||||
 
 | 
			
		||||
@@ -27,6 +27,7 @@ import me.skymc.taboolib.commands.sub.VariableSetCommand;
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
@@ -84,6 +85,9 @@ public class MainCommands implements CommandExecutor{
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("cycle") || args[0].equalsIgnoreCase("c")) {
 | 
			
		||||
			new CycleCommand(sender, args);
 | 
			
		||||
		}
 | 
			
		||||
		else if (args[0].equalsIgnoreCase("sounds")) {
 | 
			
		||||
			new SoundsCommand(sender, args);
 | 
			
		||||
		}
 | 
			
		||||
		else {
 | 
			
		||||
			MsgUtils.send(sender, "&4指令错误");
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -32,6 +32,7 @@ public class HelpCommand extends SubCommand {
 | 
			
		||||
		helps.put("/taboolib potions", "§e查看所有药水");
 | 
			
		||||
		helps.put("/taboolib flags", "§e查看所有标签");
 | 
			
		||||
		helps.put("/taboolib slots", "§e查看所有部位");
 | 
			
		||||
		helps.put("/taboolib sounds", "§e查看所有音效");
 | 
			
		||||
		helps.put("§b", null);
 | 
			
		||||
		helps.put("/taboolib getvariable §8[§7-s|a§8] §8[§7键§8]", "§e查看变量");
 | 
			
		||||
		helps.put("/taboolib setvariable §8[§7-s|a§8] §8[§7键§8] §8[§7值§8]", "§e更改变量");
 | 
			
		||||
 
 | 
			
		||||
@@ -0,0 +1,31 @@
 | 
			
		||||
package me.skymc.taboolib.commands.sub.sounds;
 | 
			
		||||
 | 
			
		||||
import org.bukkit.command.CommandSender;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.commands.SubCommand;
 | 
			
		||||
import me.skymc.taboolib.commands.sub.sounds.listener.SoundsLibraryPatch;
 | 
			
		||||
import me.skymc.taboolib.other.NumberUtils;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author sky
 | 
			
		||||
 * @since 2018-03-18 21:02:26
 | 
			
		||||
 */
 | 
			
		||||
public class SoundsCommand extends SubCommand {
 | 
			
		||||
	
 | 
			
		||||
	/**
 | 
			
		||||
	 * @param sender
 | 
			
		||||
	 * @param args
 | 
			
		||||
	 */
 | 
			
		||||
	public SoundsCommand(CommandSender sender, String[] args) {
 | 
			
		||||
		super(sender, args);
 | 
			
		||||
		if (isPlayer()) {
 | 
			
		||||
			if (args.length == 1) {
 | 
			
		||||
				SoundsLibraryPatch.openInventory((Player) sender, 1);
 | 
			
		||||
			}
 | 
			
		||||
			else {
 | 
			
		||||
				SoundsLibraryPatch.openInventory((Player) sender, NumberUtils.getInteger(args[1]));
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
@@ -0,0 +1,114 @@
 | 
			
		||||
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 org.bukkit.Bukkit;
 | 
			
		||||
import org.bukkit.Material;
 | 
			
		||||
import org.bukkit.Sound;
 | 
			
		||||
import org.bukkit.entity.Player;
 | 
			
		||||
import org.bukkit.event.EventHandler;
 | 
			
		||||
import org.bukkit.event.Listener;
 | 
			
		||||
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;
 | 
			
		||||
 | 
			
		||||
import me.skymc.taboolib.inventory.InventoryUtil;
 | 
			
		||||
import me.skymc.taboolib.inventory.ItemUtils;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @author sky
 | 
			
		||||
 * @since 2018年2月4日 下午4:35:00
 | 
			
		||||
 */
 | 
			
		||||
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();
 | 
			
		||||
			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); {
 | 
			
		||||
						ItemMeta meta = item.getItemMeta();
 | 
			
		||||
						meta.setDisplayName("§f" + sound.name());
 | 
			
		||||
						meta.setLore(Arrays.asList("", "§f左键: §71 音调", "§f左键: §72 音调"));
 | 
			
		||||
						item.setItemMeta(meta);
 | 
			
		||||
						inventory.setItem(slot, item);
 | 
			
		||||
					}
 | 
			
		||||
					holder.SOUNDS_DATA.put(slot, sound);
 | 
			
		||||
				}
 | 
			
		||||
				else {
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
			loop++;
 | 
			
		||||
		}
 | 
			
		||||
		
 | 
			
		||||
		if (page > 1) {
 | 
			
		||||
			inventory.setItem(47, ItemUtils.setName(new ItemStack(Material.ARROW), "§f上一页"));
 | 
			
		||||
		}
 | 
			
		||||
		if (((int) Math.ceil(Sound.values().length / 28D)) > page) {
 | 
			
		||||
			inventory.setItem(51, ItemUtils.setName(new ItemStack(Material.ARROW), "§f下一页"));
 | 
			
		||||
		}
 | 
			
		||||
		player.openInventory(inventory);
 | 
			
		||||
	}
 | 
			
		||||
	
 | 
			
		||||
	public static class SoundLibraryHolder implements InventoryHolder {
 | 
			
		||||
 | 
			
		||||
		public final int PAGE;
 | 
			
		||||
		public final HashMap<Integer, Sound> SOUNDS_DATA = new HashMap<>();
 | 
			
		||||
			
 | 
			
		||||
		public SoundLibraryHolder(int page) {
 | 
			
		||||
			this.PAGE = page;
 | 
			
		||||
		}
 | 
			
		||||
			
 | 
			
		||||
		@Override
 | 
			
		||||
		public Inventory getInventory() {
 | 
			
		||||
			return null;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user