Compile against 1.13 preview.

Still a lot of work to do. One thing to note is that I used LEGACY materials in a few spots where I didn't know what the new ones are as I'm not very familiar with the 1.13 update and what it changes.
This commit is contained in:
Trent Hensler 2018-01-18 17:52:44 -08:00
parent 1a820ad9b7
commit ace361af60
29 changed files with 159 additions and 258 deletions

View File

@ -577,7 +577,7 @@ public class EssentialsPlayerListener implements Listener {
public void onPlayerInteract(final PlayerInteractEvent event) {
switch (event.getAction()) {
case RIGHT_CLICK_BLOCK:
if (!event.isCancelled() && event.getClickedBlock().getType() == Material.BED_BLOCK && ess.getSettings().getUpdateBedAtDaytime()) {
if (!event.isCancelled() && event.getClickedBlock().getType() == Material.LEGACY_BED && ess.getSettings().getUpdateBedAtDaytime()) {
User player = ess.getUser(event.getPlayer());
if (player.isAuthorized("essentials.sethome.bed")) {
player.getBase().setBedSpawnLocation(event.getClickedBlock().getLocation());

View File

@ -191,7 +191,7 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
} catch (IllegalArgumentException e) {
throw new Exception("Can't spawn entity ID " + metaData + " from mob spawners.");
}
} else if (mat == Material.MONSTER_EGG) {
} else if (mat == Material.LEGACY_MONSTER_EGG) {
EntityType type;
try {
type = EntityType.fromId(metaData);
@ -226,7 +226,7 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
}
} else if (args[0].equalsIgnoreCase("blocks")) {
for (ItemStack stack : user.getBase().getInventory().getContents()) {
if (stack == null || stack.getTypeId() > 255 || stack.getType() == Material.AIR) {
if (stack == null || stack.getType() == Material.AIR) {
continue;
}
is.add(stack.clone());
@ -332,7 +332,8 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
sb.append(e.getName().toLowerCase()).append(":").append(enchantmentStorageMeta.getStoredEnchantLevel(e)).append(" ");
}
break;
case FIREWORK:
case FIREWORK_ROCKET:
case FIREWORK_STAR:
// Everything from http://wiki.ess3.net/wiki/Item_Meta#Fireworks in that order.
FireworkMeta fireworkMeta = (FireworkMeta) is.getItemMeta();
if (fireworkMeta.hasEffects()) {
@ -374,7 +375,8 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
sb.append("splash:").append(potion.isSplash()).append(" ").append("effect:").append(e.getType().getName().toLowerCase()).append(" ").append("power:").append(e.getAmplifier()).append(" ").append("duration:").append(e.getDuration() / 20).append(" ");
}
break;
case SKULL_ITEM:
case SKELETON_SKULL:
case WITHER_SKELETON_SKULL:
// item stack with meta
SkullMeta skullMeta = (SkullMeta) is.getItemMeta();
if (skullMeta != null && skullMeta.hasOwner()) {
@ -389,7 +391,22 @@ public class ItemDb implements IConf, net.ess3.api.IItemDb {
int rgb = leatherArmorMeta.getColor().asRGB();
sb.append("color:").append(rgb).append(" ");
break;
case BANNER:
case BLACK_BANNER:
case BLUE_BANNER:
case BROWN_BANNER:
case CYAN_BANNER:
case GRAY_BANNER:
case GREEN_BANNER:
case LIGHT_BLUE_BANNER:
case LIGHT_GRAY_BANNER:
case LIME_BANNER:
case MAGENTA_BANNER:
case ORANGE_BANNER:
case PINK_BANNER:
case PURPLE_BANNER:
case RED_BANNER:
case WHITE_BANNER:
case YELLOW_BANNER:
BannerMeta bannerMeta = (BannerMeta) is.getItemMeta();
if (bannerMeta != null) {
int basecolor = bannerMeta.getBaseColor().getColor().asRGB();

View File

@ -29,8 +29,9 @@ import static com.earth2me.essentials.I18n.tl;
public class MetaItemStack {
private static final Map<String, DyeColor> colorMap = new HashMap<String, DyeColor>();
private static final Map<String, FireworkEffect.Type> fireworkShape = new HashMap<String, FireworkEffect.Type>();
private static final Map<String, DyeColor> colorMap = new HashMap<>();
private static final Map<String, FireworkEffect.Type> fireworkShape = new HashMap<>();
private static final Set<Material> banners = new HashSet<>();
static {
for (DyeColor color : DyeColor.values()) {
@ -39,6 +40,11 @@ public class MetaItemStack {
for (FireworkEffect.Type type : FireworkEffect.Type.values()) {
fireworkShape.put(type.name(), type);
}
for (Material mat : Material.values()) {
if (mat.name().contains("BANNER")) {
banners.add(mat);
}
}
}
private final transient Pattern splitPattern = Pattern.compile("[:+',;.]");
@ -181,7 +187,7 @@ public class MetaItemStack {
} else if (split[0].equalsIgnoreCase("unbreakable") && hasMetaPermission(sender, "unbreakable", false, true, ess)) {
boolean value = split.length > 1 ? Boolean.valueOf(split[1]) : true;
setUnbreakable(stack, value);
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && stack.getType() == Material.SKULL_ITEM && hasMetaPermission(sender, "head", false, true, ess)) {
} 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)) {
if (stack.getDurability() == 3) {
final String owner = split[1];
final SkullMeta meta = (SkullMeta) stack.getItemMeta();
@ -208,12 +214,12 @@ public class MetaItemStack {
final BookMeta meta = (BookMeta) stack.getItemMeta();
meta.setTitle(title);
stack.setItemMeta(meta);
} else if (split.length > 1 && split[0].equalsIgnoreCase("power") && stack.getType() == Material.FIREWORK && hasMetaPermission(sender, "firework-power", false, true, ess)) {
} 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)) {
final int power = NumberUtil.isInt(split[1]) ? Integer.parseInt(split[1]) : 0;
final FireworkMeta meta = (FireworkMeta) stack.getItemMeta();
meta.setPower(power > 3 ? 4 : power);
stack.setItemMeta(meta);
} else if (stack.getType() == Material.FIREWORK) {//WARNING - Meta for fireworks will be ignored after this point.
} else if (stack.getType() == Material.FIREWORK_ROCKET || stack.getType() == Material.FIREWORK_STAR) {//WARNING - Meta for fireworks will be ignored after this point.
addFireworkMeta(sender, false, string, ess);
} else if (isPotion(stack.getType())) { //WARNING - Meta for potions will be ignored after this point.
addPotionMeta(sender, false, string, ess);
@ -251,7 +257,7 @@ public class MetaItemStack {
}
public void addFireworkMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
if (stack.getType() == Material.FIREWORK) {
if (stack.getType() == Material.FIREWORK_ROCKET || stack.getType() == Material.FIREWORK_STAR) {
final String[] split = splitPattern.split(string, 2);
if (split.length < 2) {
return;
@ -444,7 +450,7 @@ public class MetaItemStack {
}
public void addBannerMeta(final CommandSource sender, final boolean allowShortName, final String string, final IEssentials ess) throws Exception {
if (stack.getType() == Material.BANNER && string != null) {
if (banners.contains(stack.getType()) && string != null) {
final String[] split = splitPattern.split(string, 2);
if (split.length < 2) {

View File

@ -53,9 +53,9 @@ public enum MobData {
BAY_HORSE("bay", EntityType.HORSE, Horse.Color.BROWN, true),
BROWN_HORSE("brown", EntityType.HORSE, Horse.Color.BROWN, false),
SADDLE_HORSE("saddle", EntityType.HORSE, Data.HORSESADDLE, true),
GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, Material.GOLD_BARDING, true),
DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, Material.DIAMOND_BARDING, true),
ARMOR_HORSE("armor", EntityType.HORSE, Material.IRON_BARDING, true),
GOLD_ARMOR_HORSE("goldarmor", EntityType.HORSE, Material.GOLDEN_HORSE_ARMOR, true),
DIAMOND_ARMOR_HORSE("diamondarmor", EntityType.HORSE, Material.DIAMOND_HORSE_ARMOR, true),
ARMOR_HORSE("armor", EntityType.HORSE, Material.IRON_HORSE_ARMOR, true),
SIAMESE_CAT("siamese", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, true),
WHITE_CAT("white", EntityType.OCELOT, Ocelot.Type.SIAMESE_CAT, false),
RED_CAT("red", EntityType.OCELOT, Ocelot.Type.RED_CAT, true),
@ -66,12 +66,12 @@ public enum MobData {
BABY_ZOMBIE("baby", EntityType.ZOMBIE.getEntityClass(), Data.BABYZOMBIE, true),
ADULT_ZOMBIE("adult", EntityType.ZOMBIE.getEntityClass(), Data.ADULTZOMBIE, true),
DIAMOND_SWORD_ZOMBIE("diamondsword", EntityType.ZOMBIE.getEntityClass(), Material.DIAMOND_SWORD, true),
GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), Material.GOLD_SWORD, true),
GOLD_SWORD_ZOMBIE("goldsword", EntityType.ZOMBIE.getEntityClass(), Material.GOLDEN_SWORD, true),
IRON_SWORD_ZOMBIE("ironsword", EntityType.ZOMBIE.getEntityClass(), Material.IRON_SWORD, true),
STONE_SWORD_ZOMBIE("stonesword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, false),
SWORD_ZOMBIE("sword", EntityType.ZOMBIE.getEntityClass(), Material.STONE_SWORD, true),
DIAMOND_SWORD_SKELETON("diamondsword", EntityType.SKELETON, Material.DIAMOND_SWORD, true),
GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, Material.GOLD_SWORD, true),
GOLD_SWORD_SKELETON("goldsword", EntityType.SKELETON, Material.GOLDEN_SWORD, true),
IRON_SWORD_SKELETON("ironsword", EntityType.SKELETON, Material.IRON_SWORD, true),
STONE_SWORD_SKELETON("stonesword", EntityType.SKELETON, Material.STONE_SWORD, false),
SWORD_SKELETON("sword", EntityType.SKELETON, Material.STONE_SWORD, true),

View File

@ -200,21 +200,11 @@ public class OfflinePlayer implements Player {
return Collections.emptyList();
}
@Override
public Block getTargetBlock(HashSet<Byte> hs, int i) {
return null;
}
@Override
public Block getTargetBlock(Set<Material> mat, int i) {
return null;
}
@Override
public List<Block> getLastTwoTargetBlocks(HashSet<Byte> hs, int i) {
return Collections.emptyList();
}
@Override
public List<Block> getLastTwoTargetBlocks(Set<Material> mat, int i) {
return Collections.emptyList();
@ -480,10 +470,6 @@ public class OfflinePlayer implements Player {
public void sendBlockChange(Location lctn, Material mtrl, byte b) {
}
@Override
public void sendBlockChange(Location lctn, int i, byte b) {
}
@Override
public void setLastDamageCause(EntityDamageEvent ede) {
}
@ -742,10 +728,20 @@ public class OfflinePlayer implements Player {
public void hidePlayer(Player player) {
}
@Override
public void hidePlayer(Plugin plugin, Player player) {
}
@Override
public void showPlayer(Player player) {
}
@Override
public void showPlayer(Plugin plugin, Player player) {
}
@Override
public boolean canSee(Player player) {
return false;

View File

@ -11,8 +11,8 @@ import java.util.Set;
public class Potions {
private static final Map<String, PotionEffectType> POTIONS = new HashMap<String, PotionEffectType>();
private static final Map<String, PotionEffectType> ALIASPOTIONS = new HashMap<String, PotionEffectType>();
private static final Map<String, PotionEffectType> POTIONS = new HashMap<>();
private static final Map<String, PotionEffectType> ALIASPOTIONS = new HashMap<>();
static {

View File

@ -191,10 +191,10 @@ public class SpawnMob {
invent.setChestplate(new ItemStack(Material.DIAMOND_CHESTPLATE, 1));
invent.setHelmet(new ItemStack(Material.DIAMOND_HELMET, 1));
} else if (inputData.contains("gold")) {
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setLeggings(new ItemStack(Material.GOLD_LEGGINGS, 1));
invent.setChestplate(new ItemStack(Material.GOLD_CHESTPLATE, 1));
invent.setHelmet(new ItemStack(Material.GOLD_HELMET, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setLeggings(new ItemStack(Material.GOLDEN_LEGGINGS, 1));
invent.setChestplate(new ItemStack(Material.GOLDEN_CHESTPLATE, 1));
invent.setHelmet(new ItemStack(Material.GOLDEN_HELMET, 1));
} else if (inputData.contains("leather")) {
invent.setBoots(new ItemStack(Material.LEATHER_BOOTS, 1));
invent.setLeggings(new ItemStack(Material.LEATHER_LEGGINGS, 1));
@ -228,7 +228,7 @@ public class SpawnMob {
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.BOW, 1));
InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f);
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setBootsDropChance(0.0f);
}
@ -237,10 +237,10 @@ public class SpawnMob {
setVillager(zombie, false);
final EntityEquipment invent = zombie.getEquipment();
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.GOLD_SWORD, 1));
InventoryWorkaround.setItemInMainHand(invent, new ItemStack(Material.GOLDEN_SWORD, 1));
InventoryWorkaround.setItemInMainHandDropChance(invent, 0.1f);
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setBootsDropChance(0.0f);
}
@ -249,7 +249,7 @@ public class SpawnMob {
setVillager(zombie, false);
final EntityEquipment invent = zombie.getEquipment();
invent.setBoots(new ItemStack(Material.GOLD_BOOTS, 1));
invent.setBoots(new ItemStack(Material.GOLDEN_BOOTS, 1));
invent.setBootsDropChance(0.0f);
}

View File

@ -178,7 +178,7 @@ public class Economy {
* Divides the balance of a user by a value
*
* @param name Name of the user
* @param value The balance is divided by this value
* @param amount The balance is divided by this value
*
* @throws UserDoesNotExistException If a user by that name does not exists
* @throws NoLoanPermittedException If the user is not allowed to have a negative balance
@ -202,7 +202,7 @@ public class Economy {
* Multiplies the balance of a user by a value
*
* @param name Name of the user
* @param value The balance is multiplied by this value
* @param amount The balance is multiplied by this value
*
* @throws UserDoesNotExistException If a user by that name does not exists
* @throws NoLoanPermittedException If the user is not allowed to have a negative balance

View File

@ -45,7 +45,7 @@ public class Commandbook extends EssentialsCommand {
}
} else {
if (isAuthor(bmeta, player) || user.isAuthorized("essentials.book.others")) {
ItemStack newItem = new ItemStack(Material.BOOK_AND_QUILL, item.getAmount());
ItemStack newItem = new ItemStack(Material.WRITABLE_BOOK, item.getAmount());
newItem.setItemMeta(bmeta);
InventoryWorkaround.setItemInMainHand(user.getBase(), newItem);
user.sendMessage(tl("editBookContents"));
@ -53,7 +53,7 @@ public class Commandbook extends EssentialsCommand {
throw new Exception(tl("denyBookEdit"));
}
}
} else if (item.getType() == Material.BOOK_AND_QUILL) {
} else if (item.getType() == Material.WRITABLE_BOOK) {
BookMeta bmeta = (BookMeta) item.getItemMeta();
if (!user.isAuthorized("essentials.book.author")) {
bmeta.setAuthor(player);

View File

@ -3,11 +3,13 @@ package com.earth2me.essentials.commands;
import static com.earth2me.essentials.I18n.tl;
import com.earth2me.essentials.CommandSource;
import com.earth2me.essentials.ItemDb;
import com.earth2me.essentials.User;
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
import com.earth2me.essentials.utils.NumberUtil;
import com.earth2me.essentials.utils.StringUtil;
import org.bukkit.Material;
import org.bukkit.Server;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
@ -85,6 +87,7 @@ public class Commandclearinventory extends EssentialsCommand {
short data = -1;
int type = -1;
int amount = -1;
Material mat = null;
if (args.length > (offset + 1) && NumberUtil.isInt(args[(offset + 1)])) {
amount = Integer.parseInt(args[(offset + 1)]);
@ -95,7 +98,8 @@ public class Commandclearinventory extends EssentialsCommand {
} else if (!args[offset].equalsIgnoreCase("*")) {
final String[] split = args[offset].split(":");
final ItemStack item = ess.getItemDb().get(split[0]);
type = item.getTypeId();
type = ess.getItemDb().getLegacyId(item.getType());
mat = item.getType();
if (split.length > 1 && NumberUtil.isInt(split[1])) {
data = Short.parseShort(split[1]);
@ -121,14 +125,14 @@ public class Commandclearinventory extends EssentialsCommand {
} else {
if (data == -1) // data -1 means that all subtypes will be cleared
{
ItemStack stack = new ItemStack(type);
ItemStack stack = new ItemStack(mat);
if (showExtended) {
sender.sendMessage(tl("inventoryClearingAllStack", stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
}
player.getInventory().clear(type, data);
player.getInventory().remove(mat);
} else if (amount == -1) // amount -1 means all items will be cleared
{
ItemStack stack = new ItemStack(type, BASE_AMOUNT, data);
ItemStack stack = new ItemStack(mat, BASE_AMOUNT, data);
ItemStack removedStack = player.getInventory().removeItem(stack).get(0);
final int removedAmount = (BASE_AMOUNT - removedStack.getAmount());
if (removedAmount > 0 || showExtended) {
@ -138,7 +142,7 @@ public class Commandclearinventory extends EssentialsCommand {
if (amount < 0) {
amount = 1;
}
ItemStack stack = new ItemStack(type, amount, data);
ItemStack stack = new ItemStack(mat, amount, data);
if (player.getInventory().containsAtLeast(stack, amount)) {
sender.sendMessage(tl("inventoryClearingStack", amount, stack.getType().toString().toLowerCase(Locale.ENGLISH), player.getDisplayName()));
player.getInventory().removeItem(stack);

View File

@ -43,8 +43,8 @@ public class Commandfirework extends EssentialsCommand {
@Override
protected void run(final Server server, final User user, final String commandLabel, final String[] args) throws Exception {
final ItemStack stack = user.getBase().getItemInHand();
if (stack.getType() == Material.FIREWORK) {
final ItemStack stack = user.getBase().getInventory().getItemInMainHand();
if (stack.getType() == Material.FIREWORK_ROCKET || stack.getType() == Material.FIREWORK_STAR) {
if (args.length > 0) {
if (args[0].equalsIgnoreCase("clear")) {
FireworkMeta fmeta = (FireworkMeta) stack.getItemMeta();

View File

@ -33,8 +33,8 @@ public class Commandhat extends EssentialsCommand {
user.sendMessage(tl("hatRemoved"));
}
} else {
if (user.getBase().getItemInHand().getType() != Material.AIR) {
final ItemStack hand = user.getBase().getItemInHand();
if (user.getBase().getInventory().getItemInMainHand().getType() != Material.AIR) {
final ItemStack hand = user.getBase().getInventory().getItemInMainHand();
if (hand.getType().getMaxDurability() == 0) {
final PlayerInventory inv = user.getBase().getInventory();
final ItemStack head = inv.getHelmet();

View File

@ -64,11 +64,11 @@ public class Commandrecipe extends EssentialsCommand {
} else if (selectedRecipe instanceof ShapedRecipe) {
shapedRecipe(sender, (ShapedRecipe) selectedRecipe, sender.isPlayer());
} else if (selectedRecipe instanceof ShapelessRecipe) {
if (recipesOfType.size() == 1 && itemType.getType() == Material.FIREWORK) {
if (recipesOfType.size() == 1 && (itemType.getType() == Material.FIREWORK_ROCKET || itemType.getType() == Material.FIREWORK_STAR)) {
ShapelessRecipe shapelessRecipe = new ShapelessRecipe(itemType);
shapelessRecipe.addIngredient(Material.SULPHUR);
shapelessRecipe.addIngredient(Material.LEGACY_SULPHUR);
shapelessRecipe.addIngredient(Material.PAPER);
shapelessRecipe.addIngredient(Material.FIREWORK_CHARGE);
shapelessRecipe.addIngredient(Material.FIREWORK_ROCKET);
shapelessRecipe(sender, shapelessRecipe, sender.isPlayer());
} else {
shapelessRecipe(sender, (ShapelessRecipe) selectedRecipe, sender.isPlayer());

View File

@ -31,14 +31,14 @@ public class Commandskull extends EssentialsCommand {
owner = user.getName();
}
ItemStack itemSkull = user.getBase().getItemInHand();
ItemStack itemSkull = user.getBase().getInventory().getItemInMainHand();
SkullMeta metaSkull = null;
boolean spawn = false;
if (itemSkull != null && itemSkull.getType() == Material.SKULL_ITEM && itemSkull.getDurability() == 3) {
if (itemSkull != null && itemSkull.getType() == Material.LEGACY_SKULL_ITEM && itemSkull.getDurability() == 3) {
metaSkull = (SkullMeta) itemSkull.getItemMeta();
} else if (user.isAuthorized("essentials.skull.spawn")) {
itemSkull = new ItemStack(Material.SKULL_ITEM, 1, (byte) 3);
itemSkull = new ItemStack(Material.LEGACY_SKULL_ITEM, 1, (byte) 3);
metaSkull = (SkullMeta) itemSkull.getItemMeta();
spawn = true;
} else {

View File

@ -71,7 +71,7 @@ public class Commandunlimited extends EssentialsCommand {
stack.setAmount(Math.min(stack.getType().getMaxStackSize(), 2));
final String itemname = stack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !user.isAuthorized("essentials.unlimited.item-" + stack.getTypeId()) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) {
if (ess.getSettings().permissionBasedItemSpawn() && (!user.isAuthorized("essentials.unlimited.item-all") && !user.isAuthorized("essentials.unlimited.item-" + itemname) && !((stack.getType() == Material.WATER_BUCKET || stack.getType() == Material.LAVA_BUCKET) && user.isAuthorized("essentials.unlimited.item-bucket")))) {
throw new Exception(tl("unlimitedItemPermission", itemname));
}

View File

@ -36,7 +36,7 @@ public class Commandwhois extends EssentialsCommand {
sender.sendMessage(tl("whoisHunger", user.getBase().getFoodLevel(), user.getBase().getSaturation()));
sender.sendMessage(tl("whoisExp", SetExpFix.getTotalExperience(user.getBase()), user.getBase().getLevel()));
sender.sendMessage(tl("whoisLocation", user.getLocation().getWorld().getName(), user.getLocation().getBlockX(), user.getLocation().getBlockY(), user.getLocation().getBlockZ()));
long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(Statistic.PLAY_ONE_TICK) * 50);
long playtimeMs = System.currentTimeMillis() - (user.getBase().getStatistic(Statistic.PLAY_ONE_MINUTE) * 60);
sender.sendMessage(tl("whoisPlaytime", DateUtil.formatDateDiff(playtimeMs)));
if (!ess.getSettings().isEcoDisabled()) {
sender.sendMessage(tl("whoisMoney", NumberUtil.displayCurrency(user.getMoney(), ess)));

View File

@ -3,6 +3,7 @@ package com.earth2me.essentials.craftbukkit;
import org.bukkit.*;
import org.bukkit.block.Biome;
import org.bukkit.block.Block;
import org.bukkit.block.data.BlockData;
import org.bukkit.entity.*;
import org.bukkit.generator.BlockPopulator;
import org.bukkit.generator.ChunkGenerator;
@ -38,16 +39,6 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getBlockTypeIdAt(int i, int i1, int i2) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getBlockTypeIdAt(Location lctn) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public int getHighestBlockYAt(int i, int i1) {
throw new UnsupportedOperationException("Not supported yet.");
@ -163,11 +154,6 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean generateTree(Location lctn, TreeType tt, BlockChangeDelegate bcd) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public LightningStrike strikeLightning(Location lctn) {
throw new UnsupportedOperationException("Not supported yet.");
@ -203,6 +189,11 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean setSpawnLocation(Location location) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public boolean setSpawnLocation(int i, int i1, int i2) {
throw new UnsupportedOperationException("Not supported yet.");
@ -348,6 +339,11 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public FallingBlock spawnFallingBlock(Location location, BlockData blockData) throws IllegalArgumentException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public ChunkSnapshot getEmptyChunkSnapshot(int i, int i1, boolean bln, boolean bln1) {
throw new UnsupportedOperationException("Not supported yet.");
@ -583,11 +579,6 @@ public class FakeWorld implements World {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public FallingBlock spawnFallingBlock(Location location, int blockId, byte blockData) throws IllegalArgumentException {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public void playSound(Location arg0, Sound arg1, float arg2, float arg3) {
throw new UnsupportedOperationException("Not supported yet.");

View File

@ -9,8 +9,7 @@ import org.bukkit.Location;
import java.util.HashMap;
import java.util.Map;
@Data @EqualsAndHashCode(callSuper = false) public class Spawns implements StorageObject {
@MapValueType(Location.class)
private Map<String, Location> spawns = new HashMap<String, Location>();
private Map<String, Location> spawns = new HashMap<>();
}

View File

@ -213,7 +213,7 @@ public class EssentialsSign {
protected static boolean checkIfBlockBreaksSigns(final Block block) {
final Block sign = block.getRelative(BlockFace.UP);
if (sign.getType() == Material.SIGN_POST && isValidSign(new BlockSign(sign))) {
if (sign.getType() == Material.SIGN && isValidSign(new BlockSign(sign))) {
return true;
}
final BlockFace[] directions = new BlockFace[]{BlockFace.NORTH, BlockFace.EAST, BlockFace.SOUTH, BlockFace.WEST};

View File

@ -22,7 +22,7 @@ import java.util.logging.Logger;
public class SignBlockListener implements Listener {
private static final Logger LOGGER = Logger.getLogger("Essentials");
private static final Material WALL_SIGN = Material.WALL_SIGN;
private static final Material SIGN_POST = Material.SIGN_POST;
private static final Material SIGN_POST = Material.SIGN;
private final transient IEssentials ess;
public SignBlockListener(IEssentials ess) {

View File

@ -25,7 +25,7 @@ public class SignEntityListener implements Listener {
}
for (Block block : event.blockList()) {
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
event.setCancelled(true);
return;
}
@ -46,7 +46,7 @@ public class SignEntityListener implements Listener {
}
final Block block = event.getBlock();
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN_POST) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
if (((block.getType() == Material.WALL_SIGN || block.getType() == Material.SIGN) && EssentialsSign.isValidSign(ess, new EssentialsSign.BlockSign(block))) || EssentialsSign.checkIfBlockBreaksSigns(block)) {
event.setCancelled(true);
return;
}

View File

@ -54,7 +54,7 @@ public class SignPlayerListener implements Listener {
}
final Material mat = block.getType();
if (mat == Material.SIGN_POST || mat == Material.WALL_SIGN) {
if (mat == Material.SIGN || mat == Material.WALL_SIGN) {
final String csign = ((Sign) block.getState()).getLine(0);
for (EssentialsSign sign : ess.getSettings().enabledSigns()) {
if (csign.equalsIgnoreCase(sign.getSuccessName(ess))) {

View File

@ -26,7 +26,6 @@ public class SignProtection extends EssentialsSign {
public SignProtection() {
super("Protection");
protectedBlocks.add(Material.CHEST);
protectedBlocks.add(Material.BURNING_FURNACE);
protectedBlocks.add(Material.FURNACE);
protectedBlocks.add(Material.DISPENSER);
}
@ -103,7 +102,7 @@ public class SignProtection extends EssentialsSign {
}
private SignProtectionState checkProtectionSign(final Block block, final User user, final String username) {
if (block.getType() == Material.SIGN_POST || block.getType() == Material.WALL_SIGN) {
if (block.getType() == Material.SIGN || block.getType() == Material.WALL_SIGN) {
final BlockSign sign = new BlockSign(block);
if (sign.getLine(0).equals(this.getSuccessName())) { // TODO call getSuccessName(IEssentials)
return checkProtectionSign(sign, user, username);
@ -160,7 +159,7 @@ public class SignProtection extends EssentialsSign {
public boolean isBlockProtected(final Block block) {
final Block[] faces = getAdjacentBlocks(block);
for (Block b : faces) {
if (b.getType() == Material.SIGN_POST || b.getType() == Material.WALL_SIGN) {
if (b.getType() == Material.SIGN || b.getType() == Material.WALL_SIGN) {
final Sign sign = (Sign) b.getState();
if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) {
return true;
@ -170,7 +169,7 @@ public class SignProtection extends EssentialsSign {
final Block[] faceChest = getAdjacentBlocks(b);
for (Block a : faceChest) {
if (a.getType() == Material.SIGN_POST || a.getType() == Material.WALL_SIGN) {
if (a.getType() == Material.SIGN || a.getType() == Material.WALL_SIGN) {
final Sign sign = (Sign) a.getState();
if (sign.getLine(0).equalsIgnoreCase("§1[Protection]")) {
return true;

View File

@ -1,5 +1,6 @@
package com.earth2me.essentials.utils;
import com.earth2me.essentials.IEssentials;
import net.ess3.api.IUser;
import org.bukkit.GameMode;
import org.bukkit.Location;
@ -13,9 +14,6 @@ import java.util.*;
import static com.earth2me.essentials.I18n.tl;
import com.earth2me.essentials.Essentials;
import com.earth2me.essentials.IEssentials;
public class LocationUtil {
// The player can stand inside these materials
@ -24,147 +22,22 @@ public class LocationUtil {
static {
// Materials from Material.isTransparent()
HOLLOW_MATERIALS.add(Material.AIR);
HOLLOW_MATERIALS.add(Material.SAPLING);
HOLLOW_MATERIALS.add(Material.POWERED_RAIL);
HOLLOW_MATERIALS.add(Material.DETECTOR_RAIL);
HOLLOW_MATERIALS.add(Material.LONG_GRASS);
HOLLOW_MATERIALS.add(Material.DEAD_BUSH);
HOLLOW_MATERIALS.add(Material.YELLOW_FLOWER);
HOLLOW_MATERIALS.add(Material.RED_ROSE);
HOLLOW_MATERIALS.add(Material.BROWN_MUSHROOM);
HOLLOW_MATERIALS.add(Material.RED_MUSHROOM);
HOLLOW_MATERIALS.add(Material.TORCH);
HOLLOW_MATERIALS.add(Material.FIRE);
HOLLOW_MATERIALS.add(Material.REDSTONE_WIRE);
HOLLOW_MATERIALS.add(Material.CROPS);
HOLLOW_MATERIALS.add(Material.LADDER);
HOLLOW_MATERIALS.add(Material.RAILS);
HOLLOW_MATERIALS.add(Material.LEVER);
HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_OFF);
HOLLOW_MATERIALS.add(Material.REDSTONE_TORCH_ON);
HOLLOW_MATERIALS.add(Material.STONE_BUTTON);
HOLLOW_MATERIALS.add(Material.SNOW);
HOLLOW_MATERIALS.add(Material.SUGAR_CANE_BLOCK);
HOLLOW_MATERIALS.add(Material.PORTAL);
HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_OFF);
HOLLOW_MATERIALS.add(Material.DIODE_BLOCK_ON);
HOLLOW_MATERIALS.add(Material.PUMPKIN_STEM);
HOLLOW_MATERIALS.add(Material.MELON_STEM);
HOLLOW_MATERIALS.add(Material.VINE);
HOLLOW_MATERIALS.add(Material.WATER_LILY);
HOLLOW_MATERIALS.add(Material.NETHER_WARTS);
HOLLOW_MATERIALS.add(Material.ENDER_PORTAL);
HOLLOW_MATERIALS.add(Material.COCOA);
HOLLOW_MATERIALS.add(Material.TRIPWIRE_HOOK);
HOLLOW_MATERIALS.add(Material.TRIPWIRE);
HOLLOW_MATERIALS.add(Material.FLOWER_POT);
HOLLOW_MATERIALS.add(Material.CARROT);
HOLLOW_MATERIALS.add(Material.POTATO);
HOLLOW_MATERIALS.add(Material.WOOD_BUTTON);
HOLLOW_MATERIALS.add(Material.SKULL);
HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_OFF);
HOLLOW_MATERIALS.add(Material.REDSTONE_COMPARATOR_ON);
HOLLOW_MATERIALS.add(Material.ACTIVATOR_RAIL);
HOLLOW_MATERIALS.add(Material.CARPET);
HOLLOW_MATERIALS.add(Material.DOUBLE_PLANT);
// Additional Materials added in by Essentials
HOLLOW_MATERIALS.add(Material.SEEDS);
HOLLOW_MATERIALS.add(Material.SIGN_POST);
HOLLOW_MATERIALS.add(Material.WOODEN_DOOR);
HOLLOW_MATERIALS.add(Material.WALL_SIGN);
HOLLOW_MATERIALS.add(Material.STONE_PLATE);
HOLLOW_MATERIALS.add(Material.IRON_DOOR_BLOCK);
HOLLOW_MATERIALS.add(Material.WOOD_PLATE);
HOLLOW_MATERIALS.add(Material.FENCE_GATE);
for (Material mat : Material.values()) {
if (mat.isTransparent()) {
HOLLOW_MATERIALS.add(mat);
}
}
TRANSPARENT_MATERIALS.addAll(HOLLOW_MATERIALS);
TRANSPARENT_MATERIALS.add(Material.WATER);
TRANSPARENT_MATERIALS.add(Material.STATIONARY_WATER);
TRANSPARENT_MATERIALS.add(Material.FLOWING_WATER);
}
public static final int RADIUS = 3;
public static final Vector3D[] VOLUME;
public static ItemStack convertBlockToItem(final Block block) {
final ItemStack is = new ItemStack(block.getType(), 1, (short) 0, block.getData());
switch (is.getType()) {
case WOODEN_DOOR:
is.setType(Material.WOOD_DOOR);
is.setDurability((short) 0);
break;
case IRON_DOOR_BLOCK:
is.setType(Material.IRON_DOOR);
is.setDurability((short) 0);
break;
case SIGN_POST:
case WALL_SIGN:
is.setType(Material.SIGN);
is.setDurability((short) 0);
break;
case CROPS:
is.setType(Material.SEEDS);
is.setDurability((short) 0);
break;
case CAKE_BLOCK:
is.setType(Material.CAKE);
is.setDurability((short) 0);
break;
case BED_BLOCK:
is.setType(Material.BED);
is.setDurability((short) 0);
break;
case REDSTONE_WIRE:
is.setType(Material.REDSTONE);
is.setDurability((short) 0);
break;
case REDSTONE_TORCH_OFF:
case REDSTONE_TORCH_ON:
is.setType(Material.REDSTONE_TORCH_ON);
is.setDurability((short) 0);
break;
case DIODE_BLOCK_OFF:
case DIODE_BLOCK_ON:
is.setType(Material.DIODE);
is.setDurability((short) 0);
break;
case DOUBLE_STEP:
is.setType(Material.STEP);
break;
case TORCH:
case RAILS:
case LADDER:
case WOOD_STAIRS:
case COBBLESTONE_STAIRS:
case LEVER:
case STONE_BUTTON:
case FURNACE:
case DISPENSER:
case PUMPKIN:
case JACK_O_LANTERN:
case WOOD_PLATE:
case STONE_PLATE:
case PISTON_STICKY_BASE:
case PISTON_BASE:
case IRON_FENCE:
case THIN_GLASS:
case TRAP_DOOR:
case FENCE:
case FENCE_GATE:
case NETHER_FENCE:
is.setDurability((short) 0);
break;
case FIRE:
return null;
case PUMPKIN_STEM:
is.setType(Material.PUMPKIN_SEEDS);
break;
case MELON_STEM:
is.setType(Material.MELON_SEEDS);
break;
}
return is;
return new ItemStack(block.getType(), 1);
}
@ -200,15 +73,11 @@ public class LocationUtil {
@SuppressWarnings("deprecation")
public static Location getTarget(final LivingEntity entity) throws Exception {
Block block;
Block block = null;
try {
block = entity.getTargetBlock(TRANSPARENT_MATERIALS, 300);
} catch (NoSuchMethodError e) {
HashSet<Byte> legacyTransparent = new HashSet<>(); // Bukkit API prevents declaring as Set<Byte>
for (Material m : TRANSPARENT_MATERIALS) {
legacyTransparent.add((byte) m.getId());
}
block = entity.getTargetBlock(legacyTransparent, 300);
// failing now :(
}
if (block == null) {
throw new Exception("Not targeting a block");
@ -217,10 +86,7 @@ public class LocationUtil {
}
static boolean isBlockAboveAir(final World world, final int x, final int y, final int z) {
if (y > world.getMaxHeight()) {
return true;
}
return HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
return y > world.getMaxHeight() || HOLLOW_MATERIALS.contains(world.getBlockAt(x, y - 1, z).getType());
}
public static boolean isBlockUnsafeForUser(final IUser user, final World world, final int x, final int y, final int z) {
@ -235,26 +101,39 @@ public class LocationUtil {
}
public static boolean isBlockUnsafe(final World world, final int x, final int y, final int z) {
if (isBlockDamaging(world, x, y, z)) {
return true;
}
return isBlockAboveAir(world, x, y, z);
return isBlockDamaging(world, x, y, z) || isBlockAboveAir(world, x, y, z);
}
public static boolean isBlockDamaging(final World world, final int x, final int y, final int z) {
final Block below = world.getBlockAt(x, y - 1, z);
if (below.getType() == Material.LAVA || below.getType() == Material.STATIONARY_LAVA) {
return true;
}
if (below.getType() == Material.FIRE) {
return true;
}
if (below.getType() == Material.BED_BLOCK) {
return true;
switch (below.getType()) {
case LAVA:
case FLOWING_LAVA:
case FIRE:
case BLACK_BED:
case BLUE_BED:
case BROWN_BED:
case CYAN_BED:
case GRAY_BED:
case GREEN_BED:
case LIGHT_BLUE_BED:
case LIGHT_GRAY_BED:
case LIME_BED:
case MAGENTA_BED:
case ORANGE_BED:
case PINK_BED:
case PURPLE_BED:
case RED_BED:
case WHITE_BED:
case YELLOW_BED:
return true;
}
if (world.getBlockAt(x, y, z).getType() == Material.PORTAL) {
return true;
}
return (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y, z).getType())) || (!HOLLOW_MATERIALS.contains(world.getBlockAt(x, y + 1, z).getType()));
}

View File

@ -5,6 +5,7 @@ import org.bukkit.*;
import org.bukkit.Warning.WarningState;
import org.bukkit.World.Environment;
import org.bukkit.advancement.Advancement;
import org.bukkit.block.data.BlockData;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarFlag;
import org.bukkit.boss.BarStyle;
@ -969,6 +970,16 @@ public class FakeServer implements Server {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public BlockData createData(Material material) {
throw new UnsupportedOperationException("Not supported yet.");
}
@Override
public <T extends Keyed> Tag<T> getTag(String s, NamespacedKey namespacedKey, Class<T> aClass) {
throw new UnsupportedOperationException("Not supported yet.");
}
class FakePluginManager implements PluginManager {
ArrayList<RegisteredListener> listeners = new ArrayList<RegisteredListener>();

View File

@ -67,7 +67,6 @@ public class EssentialsAntiBuildListener implements Listener {
public void onBlockPlace(final BlockPlaceEvent event) {
final User user = ess.getUser(event.getPlayer());
final Block block = event.getBlockPlaced();
final int typeId = block.getTypeId();
final Material type = block.getType();
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "place", block)) {
@ -95,7 +94,6 @@ public class EssentialsAntiBuildListener implements Listener {
public void onBlockBreak(final BlockBreakEvent event) {
final User user = ess.getUser(event.getPlayer());
final Block block = event.getBlock();
final int typeId = block.getTypeId();
final Material type = block.getType();
if (prot.getSettingBool(AntiBuildConfig.disable_build) && !user.canBuild() && !user.isAuthorized("essentials.build") && !metaPermCheck(user, "break", block)) {

View File

@ -57,12 +57,12 @@ public class EssentialsProtectBlockListener implements Listener {
public void onBlockFromTo(final BlockFromToEvent event) {
final Block block = event.getBlock();
if (block.getType() == Material.WATER || block.getType() == Material.STATIONARY_WATER) {
if (block.getType() == Material.WATER || block.getType() == Material.WATER) {
event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_water_flow));
return;
}
if (block.getType() == Material.LAVA || block.getType() == Material.STATIONARY_LAVA) {
if (block.getType() == Material.LAVA || block.getType() == Material.LAVA) {
event.setCancelled(prot.getSettingBool(ProtectConfig.prevent_lava_flow));
return;
}

View File

@ -79,7 +79,8 @@ public class SpawnEggRefl {
*/
@SuppressWarnings("deprecation")
public ItemStack toItemStack(int amount) throws Exception {
ItemStack item = new ItemStack(Material.MONSTER_EGG, amount);
// TODO: Get off of the deprecated LEGACY material.
ItemStack item = new ItemStack(Material.LEGACY_MONSTER_EGG, amount);
Class<?> craftItemStackClass = ReflUtil.getOBCClass("inventory.CraftItemStack");
Method asNMSCopyMethod = ReflUtil.getMethodCached(craftItemStackClass, "asNMSCopy", ItemStack.class);
@ -122,7 +123,7 @@ public class SpawnEggRefl {
public static SpawnEggRefl fromItemStack(ItemStack item) throws Exception {
if (item == null)
throw new IllegalArgumentException("Item cannot be null");
if (item.getType() != Material.MONSTER_EGG)
if (item.getType() != Material.LEGACY_MONSTER_EGG)
throw new IllegalArgumentException("Item is not a monster egg");
Class<?> NMSItemStackClass = ReflUtil.getNMSClass("ItemStack");

View File

@ -53,7 +53,7 @@
<dependency>
<groupId>org.bukkit</groupId>
<artifactId>bukkit</artifactId>
<version>1.12-R0.1-SNAPSHOT</version>
<version>18w02a-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>