mirror of
https://github.com/EssentialsX/Essentials.git
synced 2025-01-27 10:31:31 +01:00
Add support for vanilla JSON metadata syntax (/give, /i, /kit, etc.)
This commit is contained in:
parent
839bfe0c2e
commit
9ce1158aeb
@ -8,6 +8,8 @@ import com.earth2me.essentials.utils.FormatUtil;
|
||||
import com.earth2me.essentials.utils.NumberUtil;
|
||||
import java.util.*;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.google.common.base.Joiner;
|
||||
import net.ess3.api.IEssentials;
|
||||
import org.bukkit.Color;
|
||||
import org.bukkit.DyeColor;
|
||||
@ -36,7 +38,7 @@ public class MetaItemStack
|
||||
}
|
||||
}
|
||||
private final transient Pattern splitPattern = Pattern.compile("[:+',;.]");
|
||||
private final ItemStack stack;
|
||||
private ItemStack stack;
|
||||
private FireworkEffect.Builder builder = FireworkEffect.builder();
|
||||
private PotionEffectType pEffectType;
|
||||
private PotionEffect pEffect;
|
||||
@ -95,25 +97,42 @@ public class MetaItemStack
|
||||
|
||||
public void parseStringMeta(final CommandSource sender, final boolean allowUnsafe, String[] string, int fromArg, final IEssentials ess) throws Exception
|
||||
{
|
||||
|
||||
for (int i = fromArg; i < string.length; i++)
|
||||
if (string[fromArg].startsWith("{"))
|
||||
{
|
||||
addStringMeta(sender, allowUnsafe, string[i], ess);
|
||||
try
|
||||
{
|
||||
stack = ess.getServer().getUnsafe().modifyItemStack(stack, Joiner.on(' ').join(Arrays.asList(string).subList(fromArg, string.length)));
|
||||
}
|
||||
catch (NoSuchMethodError nsme)
|
||||
{
|
||||
throw new Exception(_("noMetaJson"), nsme);
|
||||
}
|
||||
catch (Throwable throwable)
|
||||
{
|
||||
throw new Exception(throwable.getMessage(), throwable);
|
||||
}
|
||||
}
|
||||
if (validFirework)
|
||||
else
|
||||
{
|
||||
if (!hasMetaPermission(sender, "firework", true, true, ess))
|
||||
for (int i = fromArg; i < string.length; i++)
|
||||
{
|
||||
throw new Exception(_("noMetaFirework"));
|
||||
addStringMeta(sender, allowUnsafe, string[i], ess);
|
||||
}
|
||||
FireworkEffect effect = builder.build();
|
||||
FireworkMeta fmeta = (FireworkMeta)stack.getItemMeta();
|
||||
fmeta.addEffect(effect);
|
||||
if (fmeta.getEffects().size() > 1 && !hasMetaPermission(sender, "firework-multiple", true, true, ess))
|
||||
if (validFirework)
|
||||
{
|
||||
throw new Exception(_("multipleCharges"));
|
||||
if (!hasMetaPermission(sender, "firework", true, true, ess))
|
||||
{
|
||||
throw new Exception(_("noMetaFirework"));
|
||||
}
|
||||
FireworkEffect effect = builder.build();
|
||||
FireworkMeta fmeta = (FireworkMeta)stack.getItemMeta();
|
||||
fmeta.addEffect(effect);
|
||||
if (fmeta.getEffects().size() > 1 && !hasMetaPermission(sender, "firework-multiple", true, true, ess))
|
||||
{
|
||||
throw new Exception(_("multipleCharges"));
|
||||
}
|
||||
stack.setItemMeta(fmeta);
|
||||
}
|
||||
stack.setItemMeta(fmeta);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -533,3 +533,4 @@ mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
ignoreExempt=\u00a74You can not ignore that player.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a7Nemuzes uveznit hrace, kteri nejsou pripojeni.
|
||||
muteExemptOffline=\u00a7Nemuzes umlcet hrace, kteri nejsou pripojeni.
|
||||
ignoreExempt=\u00a74Nemuzes ignorovat tohoto hrace.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Du kan ikke s\u00e6tte offline spillere i f\u00e6ngsel.
|
||||
muteExemptOffline=\u00a74Du kan ikke g\u00f8re offline spillere tavse.
|
||||
ignoreExempt=\u00a74Du kan ikke ignorere den spiller.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Du darfst abgemeldete Spieler nicht einsperren.
|
||||
muteExemptOffline=\u00a74Du darfst abgemeldete Spieler nicht stummschalten.
|
||||
ignoreExempt=\u00a74Du kannst diesen Spieler nicht ignorieren.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
ignoreExempt=\u00a74You may not ignore that player.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74No puedes encarcelar a jugadores que no est\u00e1n cone
|
||||
muteExemptOffline=\u00a74No puedes silenciar a jugadores que no est\u00e1n conectados.
|
||||
ignoreExempt=\u00a74No puedes ignorar a este jugador.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
ignoreExempt=\u00a74You can not ignore that player.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Vous ne pouvez pas emprisonner les joueurs d\u00e9conne
|
||||
muteExemptOffline=\u00a74Vous ne pouvez pas rendre muets les joueurs d\u00e9connect\u00e9s.
|
||||
ignoreExempt=\u00a74Vous ne pouvez pas ignorer ce joueur.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Nem b\u00f6rt\u00f6n\u00f6zhetsz be Offline j\u00e1t\u0
|
||||
muteExemptOffline=\u00a74Nem n\u00e9m\u00edthatsz le Offline j\u00e1t\u00e9kost.
|
||||
ignoreExempt=\u00a74Nem hagyhatod figyelmen k\u00edv\u0171l ezt a j\u00e1t\u00e9kost.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Non puoi imprigionare un giocatore che e'' offline.
|
||||
muteExemptOffline=\u00a74Non puoi silenziare un giocatore che e'' offline.
|
||||
ignoreExempt=\u00a74Non puoi ignorare quel giocatore.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Tu negali pasodinti i kalejima neprisijungusiu zaideju.
|
||||
muteExemptOffline=\u00a74Tu negali uztildyti neprisijungusiu zaideju.
|
||||
ignoreExempt=\u00a74Tu negali ignoruoti sio zaidejo.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Je mag geen offline spelers in de gevangenis zetten.
|
||||
muteExemptOffline=\u00a74Je mag geen offline players dempen
|
||||
ignoreExempt=\u00a74Je kan die speler niet negeren.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Nie mozesz wrzucic do wiezienia graczy offline.
|
||||
muteExemptOffline=\u00a74Nie mozesz wyciszyc graczy offline.
|
||||
ignoreExempt=\u00a74Nie mozesz ignorowac tego gracza.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74Voce nao pode prender jogadores desconectados.
|
||||
muteExemptOffline=\u00a74Voce nao pode silenciar jogadores desconectados.
|
||||
ignoreExempt=\u00a74Voce nao pode ignorar aquele jogador.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
ignoreExempt=\u00a74You can not ignore that player.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,3 +533,4 @@ mayNotJailOffline=\u00a74\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u044
|
||||
muteExemptOffline=\u00a74\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0437\u0430\u0442\u043a\u043d\u0443\u0442\u044c \u0438\u0433\u0440\u043e\u043a\u0430 \u0432 \u043e\u0444\u0444\u043b\u0430\u0439\u043d\u0435.
|
||||
ignoreExempt=\u00a74\u0412\u044b \u043d\u0435 \u043c\u043e\u0436\u0435\u0442\u0435 \u0438\u0433\u043d\u043e\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u044d\u0442\u043e\u0433\u043e \u0438\u0433\u0440\u043e\u043a\u0430.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74DU kan inte f\u00e4ngelse urkopplad-spelare.
|
||||
muteExemptOffline=\u00a74DU kan inte st\u00e4nga av urkopplad-spelare.
|
||||
ignoreExempt=\u00a74DU kan inte ignorera den spelaren.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
ignoreExempt=\u00a74You can not ignore that player.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74\u4f60\u53ef\u80fd\u65e0\u6cd5\u76d1\u7981\u5df2\u79bb\
|
||||
muteExemptOffline=\u00a74\u4f60\u53ef\u80fd\u65e0\u6cd5\u7981\u8a00\u5df2\u79bb\u7ebf\u73a9\u5bb6.
|
||||
ignoreExempt=\u00a74\u4f60\u65e0\u6cd5\u5ffd\u7565\u90a3\u4e2a\u73a9\u5bb6.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
ignoreExempt=\u00a74You can not ignore that player.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
@ -533,4 +533,5 @@ mayNotJailOffline=\u00a74You may not jail offline players.
|
||||
muteExemptOffline=\u00a74You may not mute offline players.
|
||||
ignoreExempt=\u00a74You can not ignore that player.
|
||||
unsafeTeleportDestination=\u00a74The teleport destination is unsafe and teleport-safety is disabled.
|
||||
noMetaJson=JSON Metadata is not supported in this version of Bukkit
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user