版本更新至:3.76

调整:开发框架改为 Gradle
新增:Language2 工具新增 [book] 类型
This commit is contained in:
坏黑
2018-03-10 21:13:05 +08:00
parent 6439e4b780
commit ad1a21196f
238 changed files with 1686 additions and 1132 deletions

View File

@@ -0,0 +1,125 @@
package me.skymc.taboolib.anvil;
import java.util.ArrayList;
import java.util.HashMap;
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.event.inventory.InventoryCloseEvent;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;
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;
public class AnvilContainerAPI implements Listener{
public static List<String> list = new ArrayList<>();
public static ItemStack item = new ItemStack(Material.NAME_TAG);
public static HashMap<String, String> isOpen = new HashMap<>();
public static AnvilContainerAPIEvent event;
public static void send(Player p, String type, String str, List<String> lorelist)
{
isOpen.put(p.getName(), type);
AnvilContainer_V1_9_4.openAnvil(p);
ItemMeta meta = item.getItemMeta();
list.clear();
if (lorelist == null)
{
list.add("");
list.add("§7在上方文本框内输入信息");
list.add("§7随后点击右侧输出物品");
}
else
{
list = lorelist;
}
meta.setLore(list);
meta.setDisplayName(str);
item.setItemMeta(meta);
p.getOpenInventory().setItem(0, item);
p.playSound(p.getLocation(), Sound.BLOCK_ANVIL_PLACE, 1, 1);
}
@EventHandler
public void close(InventoryCloseEvent e)
{
if (isOpen.containsKey(e.getPlayer().getName()))
{
isOpen.remove(e.getPlayer().getName());
if (e.getInventory().getType() == InventoryType.ANVIL)
{
e.getInventory().clear();
}
}
}
@EventHandler
public void click(InventoryClickEvent e)
{
if (!isOpen.containsKey(e.getWhoClicked().getName()))
{
return;
}
if (e.getInventory().getType() != InventoryType.ANVIL)
{
return;
}
e.setCancelled(true);
int slot = e.getRawSlot();
if (slot != 2)
{
return;
}
Inventory inv = e.getInventory();
if (inv.getItem(2) == null)
{
return;
}
if (inv.getItem(2).getItemMeta().hasDisplayName())
{
event = new AnvilContainerAPIEvent(e, isOpen.get(e.getWhoClicked().getName()), inv.getItem(2).getItemMeta().getDisplayName());
e.getWhoClicked().closeInventory();
Bukkit.getPluginManager().callEvent(event);
}
}
@EventHandler
public void example(PlayerCommandPreprocessEvent e)
{
if (e.getMessage().equals("/anvilexample"))
{
if (e.getPlayer().hasPermission("taboolib.admin"))
{
e.setCancelled(true);
AnvilContainerAPI.send(e.getPlayer(), "EXAMPLE", "在这里输入文本", null);
}
}
}
@EventHandler
public void example2(AnvilContainerAPIEvent e)
{
if (e.type.equals("EXAMPLE"))
{
e.event.getWhoClicked().sendMessage(e.string);
}
}
}

View File

@@ -0,0 +1,31 @@
package me.skymc.taboolib.anvil;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.bukkit.event.inventory.InventoryClickEvent;
public class AnvilContainerAPIEvent extends Event{
public static final HandlerList handlers = new HandlerList();
public InventoryClickEvent event;
public String string;
public String type;
public AnvilContainerAPIEvent(InventoryClickEvent e, String t, String s)
{
event = e;
string = s;
type = t;
}
@Override
public HandlerList getHandlers()
{
return handlers;
}
public static HandlerList getHandlerList()
{
return handlers;
}
}

View File

@@ -0,0 +1,40 @@
package me.skymc.taboolib.anvil.versions;
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)
{
super(player.inventory, player.world, new BlockPosition(0, 0, 0), player);
}
public boolean a(EntityHuman player)
{
return true;
}
/**
* @deprecated 方法已过期,已有新的方法
*/
public static void openAnvil(Player p)
{
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.activeContainer = container;
player.activeContainer.windowId = c;
player.activeContainer.addSlotListener(player);
}
}

View File

@@ -0,0 +1,40 @@
package me.skymc.taboolib.anvil.versions;
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)
{
super(player.inventory, player.world, new BlockPosition(0, 0, 0), player);
}
public boolean a(EntityHuman player)
{
return true;
}
/**
* @deprecated 方法已过期,已有新的方法
*/
public static void openAnvil(Player p)
{
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.activeContainer = container;
player.activeContainer.windowId = c;
player.activeContainer.addSlotListener(player);
}
}

View File

@@ -0,0 +1,40 @@
package me.skymc.taboolib.anvil.versions;
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)
{
super(player.inventory, player.world, new BlockPosition(0, 0, 0), player);
}
public boolean a(EntityHuman player)
{
return true;
}
/**
* @deprecated 方法已过期,已有新的方法
*/
public static void openAnvil(Player p)
{
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.activeContainer = container;
player.activeContainer.windowId = c;
player.activeContainer.addSlotListener(player);
}
}