mirror of
https://github.com/TotalFreedomMC/TF-EssentialsX.git
synced 2025-08-05 12:02:53 +00:00
Use utility methods in MetaItemStack
This commit is contained in:
parent
3df3f8a812
commit
1206178eca
1 changed files with 23 additions and 31 deletions
|
@ -3,7 +3,9 @@ package com.earth2me.essentials;
|
||||||
import com.earth2me.essentials.textreader.BookInput;
|
import com.earth2me.essentials.textreader.BookInput;
|
||||||
import com.earth2me.essentials.textreader.BookPager;
|
import com.earth2me.essentials.textreader.BookPager;
|
||||||
import com.earth2me.essentials.textreader.IText;
|
import com.earth2me.essentials.textreader.IText;
|
||||||
|
import com.earth2me.essentials.utils.EnumUtil;
|
||||||
import com.earth2me.essentials.utils.FormatUtil;
|
import com.earth2me.essentials.utils.FormatUtil;
|
||||||
|
import com.earth2me.essentials.utils.MaterialUtil;
|
||||||
import com.earth2me.essentials.utils.NumberUtil;
|
import com.earth2me.essentials.utils.NumberUtil;
|
||||||
import com.google.common.base.Joiner;
|
import com.google.common.base.Joiner;
|
||||||
import net.ess3.api.IEssentials;
|
import net.ess3.api.IEssentials;
|
||||||
|
@ -103,10 +105,6 @@ public class MetaItemStack {
|
||||||
completePotion = true;
|
completePotion = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPotion(Material type) {
|
|
||||||
return type.name().endsWith("POTION");
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean canSpawn(final IEssentials ess) {
|
public boolean canSpawn(final IEssentials ess) {
|
||||||
try {
|
try {
|
||||||
ess.getServer().getUnsafe().modifyItemStack(stack.clone(), "{}");
|
ess.getServer().getUnsafe().modifyItemStack(stack.clone(), "{}");
|
||||||
|
@ -164,16 +162,8 @@ public class MetaItemStack {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
Material banner = null;
|
Material WRITTEN_BOOK = EnumUtil.getMaterial("WRITTEN_BOOK");
|
||||||
Material shield = null;
|
Material SHIELD = EnumUtil.getMaterial("SHIELD"); // 1.9
|
||||||
|
|
||||||
try {
|
|
||||||
// 1.8
|
|
||||||
banner = Material.valueOf("BANNER");
|
|
||||||
|
|
||||||
// 1.9
|
|
||||||
shield = Material.valueOf("SHIELD");
|
|
||||||
} 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)) {
|
||||||
final String displayName = FormatUtil.replaceFormat(split[1].replace('_', ' '));
|
final String displayName = FormatUtil.replaceFormat(split[1].replace('_', ' '));
|
||||||
|
@ -191,16 +181,16 @@ public class MetaItemStack {
|
||||||
} else if (split[0].equalsIgnoreCase("unbreakable") && hasMetaPermission(sender, "unbreakable", false, true, ess)) {
|
} else if (split[0].equalsIgnoreCase("unbreakable") && hasMetaPermission(sender, "unbreakable", false, true, ess)) {
|
||||||
boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true;
|
boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true;
|
||||||
setUnbreakable(stack, value);
|
setUnbreakable(stack, value);
|
||||||
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && (stack.getType() == Material.SKELETON_SKULL || stack.getType() == Material.WITHER_SKELETON_SKULL) && hasMetaPermission(sender, "head", false, true, ess)) {
|
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && hasMetaPermission(sender, "head", false, true, ess)) {
|
||||||
if (stack.getDurability() == 3) {
|
if (MaterialUtil.isPlayerHead(stack.getType(), stack.getDurability())) {
|
||||||
final String owner = split[1];
|
final String owner = split[1];
|
||||||
final SkullMeta meta = (SkullMeta) stack.getItemMeta();
|
final SkullMeta meta = (SkullMeta) stack.getItemMeta();
|
||||||
meta.setOwner(owner);
|
meta.setOwningPlayer(ess.getServer().getOfflinePlayer(owner));
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
} else {
|
} else {
|
||||||
throw new Exception(tl("onlyPlayerSkulls"));
|
throw new Exception(tl("onlyPlayerSkulls"));
|
||||||
}
|
}
|
||||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == Material.WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) {
|
} else if (split.length > 1 && split[0].equalsIgnoreCase("book") && stack.getType() == WRITTEN_BOOK && (hasMetaPermission(sender, "book", true, true, ess) || hasMetaPermission(sender, "chapter-" + split[1].toLowerCase(Locale.ENGLISH), true, true, ess))) {
|
||||||
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
||||||
final IText input = new BookInput("book", true, ess);
|
final IText input = new BookInput("book", true, ess);
|
||||||
final BookPager pager = new BookPager(input);
|
final BookPager pager = new BookPager(input);
|
||||||
|
@ -208,42 +198,44 @@ public class MetaItemStack {
|
||||||
List<String> pages = pager.getPages(split[1]);
|
List<String> pages = pager.getPages(split[1]);
|
||||||
meta.setPages(pages);
|
meta.setPages(pages);
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) {
|
} else if (split.length > 1 && split[0].equalsIgnoreCase("author") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "author", false, true, ess)) {
|
||||||
final String author = FormatUtil.replaceFormat(split[1]);
|
final String author = FormatUtil.replaceFormat(split[1]);
|
||||||
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
||||||
meta.setAuthor(author);
|
meta.setAuthor(author);
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == Material.WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) {
|
} else if (split.length > 1 && split[0].equalsIgnoreCase("title") && stack.getType() == WRITTEN_BOOK && hasMetaPermission(sender, "title", false, true, ess)) {
|
||||||
final String title = FormatUtil.replaceFormat(split[1].replace('_', ' '));
|
final String title = FormatUtil.replaceFormat(split[1].replace('_', ' '));
|
||||||
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
final BookMeta meta = (BookMeta) stack.getItemMeta();
|
||||||
meta.setTitle(title);
|
meta.setTitle(title);
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("power") && (stack.getType() == Material.FIREWORK_ROCKET || stack.getType() == Material.FIREWORK_STAR)&& hasMetaPermission(sender, "firework-power", false, true, ess)) {
|
} else if (split.length > 1 && split[0].equalsIgnoreCase("power") && (MaterialUtil.isFirework(stack.getType()))&& hasMetaPermission(sender, "firework-power", false, true, ess)) {
|
||||||
final int power = NumberUtil.isInt(split[1]) ? Integer.parseInt(split[1]) : 0;
|
final int power = NumberUtil.isInt(split[1]) ? Integer.parseInt(split[1]) : 0;
|
||||||
final FireworkMeta meta = (FireworkMeta) stack.getItemMeta();
|
final FireworkMeta meta = (FireworkMeta) stack.getItemMeta();
|
||||||
meta.setPower(power > 3 ? 4 : power);
|
meta.setPower(power > 3 ? 4 : power);
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
} else if (split.length > 1 && split[0].equalsIgnoreCase("itemflags") && hasMetaPermission(sender, "itemflags", false, true, ess)) {
|
} else if (split.length > 1 && split[0].equalsIgnoreCase("itemflags") && hasMetaPermission(sender, "itemflags", false, true, ess)) {
|
||||||
addItemFlags(string);
|
addItemFlags(string);
|
||||||
} else if (stack.getType() == Material.FIREWORK_ROCKET || stack.getType() == Material.FIREWORK_STAR) {//WARNING - Meta for fireworks will be ignored after this point.
|
} else if (MaterialUtil.isFirework(stack.getType())) {//WARNING - Meta for fireworks will be ignored after this point.
|
||||||
addFireworkMeta(sender, false, string, ess);
|
addFireworkMeta(sender, false, string, ess);
|
||||||
} else if (isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point.
|
} else if (MaterialUtil.isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point.
|
||||||
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 (MaterialUtil.isBanner(stack.getType())) {
|
||||||
|
//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.
|
} else if (SHIELD != null && stack.getType() == SHIELD) { //WARNING - Meta for shields will be ignored after this point.
|
||||||
addBannerMeta(sender, false, string, ess);
|
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")) && MaterialUtil.isLeatherArmor(stack.getType())) {
|
||||||
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("#"))) {
|
||||||
|
// Either integer or hexadecimal
|
||||||
final LeatherArmorMeta meta = (LeatherArmorMeta) stack.getItemMeta();
|
final LeatherArmorMeta meta = (LeatherArmorMeta) stack.getItemMeta();
|
||||||
String input = color[0];
|
String input = color[0];
|
||||||
if(input.startsWith("#")) {
|
if (input.startsWith("#")) { // Hex
|
||||||
meta.setColor(Color.fromRGB(
|
meta.setColor(Color.fromRGB(
|
||||||
Integer.valueOf(input.substring(1, 3), 16),
|
Integer.valueOf(input.substring(1, 3), 16),
|
||||||
Integer.valueOf(input.substring(3, 5), 16),
|
Integer.valueOf(input.substring(3, 5), 16),
|
||||||
Integer.valueOf(input.substring(5, 7), 16)));
|
Integer.valueOf(input.substring(5, 7), 16)));
|
||||||
} else {
|
} else { // Int
|
||||||
meta.setColor(Color.fromRGB(Integer.parseInt(input)));
|
meta.setColor(Color.fromRGB(Integer.parseInt(input)));
|
||||||
}
|
}
|
||||||
stack.setItemMeta(meta);
|
stack.setItemMeta(meta);
|
||||||
|
@ -287,7 +279,7 @@ public class MetaItemStack {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addFireworkMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
|
public void addFireworkMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
|
||||||
if (stack.getType() == Material.FIREWORK_ROCKET || stack.getType() == Material.FIREWORK_STAR) {
|
if (MaterialUtil.isFirework(stack.getType())) {
|
||||||
final String[] split = splitPattern.split(string, 2);
|
final String[] split = splitPattern.split(string, 2);
|
||||||
if (split.length < 2) {
|
if (split.length < 2) {
|
||||||
return;
|
return;
|
||||||
|
@ -359,7 +351,7 @@ public class MetaItemStack {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPotionMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
|
public void addPotionMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
|
||||||
if (isPotion(stack.getType())) {
|
if (MaterialUtil.isPotion(stack.getType())) {
|
||||||
final String[] split = splitPattern.split(string, 2);
|
final String[] split = splitPattern.split(string, 2);
|
||||||
|
|
||||||
if (split.length < 2) {
|
if (split.length < 2) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue