mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-02-11 11:49:12 +00:00
Implement Shield item serialization.
This commit is contained in:
parent
948cce4ceb
commit
352c92b880
2 changed files with 43 additions and 0 deletions
|
@ -8,6 +8,7 @@ import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Color;
|
import org.bukkit.Color;
|
||||||
import org.bukkit.FireworkEffect;
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Banner;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
@ -353,6 +354,18 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case SHIELD:
|
||||||
|
// Hacky fix for accessing Shield meta - https://github.com/drtshock/Essentials/pull/745#issuecomment-234843795
|
||||||
|
BlockStateMeta shieldMeta = (BlockStateMeta) is.getItemMeta();
|
||||||
|
Banner shieldBannerMeta = (Banner) shieldMeta.getBlockState();
|
||||||
|
int basecolor = shieldBannerMeta.getBaseColor().getColor().asRGB();
|
||||||
|
sb.append("basecolor:").append(basecolor).append(" ");
|
||||||
|
for (org.bukkit.block.banner.Pattern p : shieldBannerMeta.getPatterns()) {
|
||||||
|
String type = p.getPattern().getIdentifier();
|
||||||
|
int color = p.getColor().getColor().asRGB();
|
||||||
|
sb.append(type).append(",").append(color).append(" ");
|
||||||
|
}
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return sb.toString().trim().replaceAll("§", "&");
|
return sb.toString().trim().replaceAll("§", "&");
|
||||||
|
|
|
@ -11,6 +11,7 @@ import org.bukkit.Color;
|
||||||
import org.bukkit.DyeColor;
|
import org.bukkit.DyeColor;
|
||||||
import org.bukkit.FireworkEffect;
|
import org.bukkit.FireworkEffect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.block.Banner;
|
||||||
import org.bukkit.block.banner.PatternType;
|
import org.bukkit.block.banner.PatternType;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
@ -154,9 +155,14 @@ public class MetaItemStack {
|
||||||
}
|
}
|
||||||
|
|
||||||
Material banner = null;
|
Material banner = null;
|
||||||
|
Material shield = null;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
// 1.8
|
||||||
banner = Material.valueOf("BANNER");
|
banner = Material.valueOf("BANNER");
|
||||||
|
|
||||||
|
// 1.9
|
||||||
|
shield = Material.valueOf("SHIELD");
|
||||||
} catch(IllegalArgumentException ignored){}
|
} catch(IllegalArgumentException ignored){}
|
||||||
|
|
||||||
if (split.length > 1 && split[0].equalsIgnoreCase("name") && hasMetaPermission(sender, "name", false, true, ess)) {
|
if (split.length > 1 && split[0].equalsIgnoreCase("name") && hasMetaPermission(sender, "name", false, true, ess)) {
|
||||||
|
@ -212,6 +218,8 @@ public class MetaItemStack {
|
||||||
addPotionMeta(sender, false, string, ess);
|
addPotionMeta(sender, false, string, ess);
|
||||||
} else if (banner != null && stack.getType() == banner) { //WARNING - Meta for banners will be ignored after this point.
|
} else if (banner != null && stack.getType() == banner) { //WARNING - Meta for banners will be ignored after this point.
|
||||||
addBannerMeta(sender, false, string, ess);
|
addBannerMeta(sender, false, string, ess);
|
||||||
|
} else if (shield != null && stack.getType() == shield) { //WARNING - Meta for shields will be ignored after this point.
|
||||||
|
addBannerMeta(sender, false, string, ess);
|
||||||
} else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && (stack.getType() == Material.LEATHER_BOOTS || stack.getType() == Material.LEATHER_CHESTPLATE || stack.getType() == Material.LEATHER_HELMET || stack.getType() == Material.LEATHER_LEGGINGS)) {
|
} else if (split.length > 1 && (split[0].equalsIgnoreCase("color") || split[0].equalsIgnoreCase("colour")) && (stack.getType() == Material.LEATHER_BOOTS || stack.getType() == Material.LEATHER_CHESTPLATE || stack.getType() == Material.LEATHER_HELMET || stack.getType() == Material.LEATHER_LEGGINGS)) {
|
||||||
final String[] color = split[1].split("(\\||,)");
|
final String[] color = split[1].split("(\\||,)");
|
||||||
if(color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) { // int rgb and hex
|
if(color.length == 1 && (NumberUtil.isInt(color[0]) || color[0].startsWith("#"))) { // int rgb and hex
|
||||||
|
@ -453,6 +461,28 @@ public class MetaItemStack {
|
||||||
meta.addPattern(pattern);
|
meta.addPattern(pattern);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
stack.setItemMeta(meta);
|
||||||
|
} else if (stack.getType() == Material.SHIELD && string != null) {
|
||||||
|
final String[] split = splitPattern.split(string, 2);
|
||||||
|
|
||||||
|
if (split.length < 2) {
|
||||||
|
throw new Exception(tl("invalidBanner", split[1]));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Hacky fix for accessing Shield meta - https://github.com/drtshock/Essentials/pull/745#issuecomment-234843795
|
||||||
|
BlockStateMeta meta = (BlockStateMeta) stack.getItemMeta();
|
||||||
|
Banner banner = (Banner) meta.getBlockState();
|
||||||
|
if (split[0].equalsIgnoreCase("basecolor")) {
|
||||||
|
Color color = Color.fromRGB(Integer.valueOf(split[1]));
|
||||||
|
banner.setBaseColor(DyeColor.getByColor(color));
|
||||||
|
} else if (PatternType.valueOf(split[0]) != null) {
|
||||||
|
PatternType type = PatternType.valueOf(split[0]);
|
||||||
|
DyeColor color = DyeColor.getByColor(Color.fromRGB(Integer.valueOf(split[1])));
|
||||||
|
org.bukkit.block.banner.Pattern pattern = new org.bukkit.block.banner.Pattern(color, type);
|
||||||
|
banner.addPattern(pattern);
|
||||||
|
}
|
||||||
|
banner.update();
|
||||||
|
meta.setBlockState(banner);
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue