Skip to content

Commit 63cbf7e

Browse files
authored
Prevent legacy material support from being initiated (#4697)
1 parent 19837f9 commit 63cbf7e

File tree

18 files changed

+109
-53
lines changed

18 files changed

+109
-53
lines changed

Essentials/src/main/java/com/earth2me/essentials/MetaItemStack.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public void addStringMeta(final CommandSource sender, final boolean allowUnsafe,
210210
final boolean value = split.length <= 1 || Boolean.parseBoolean(split[1]);
211211
setUnbreakable(ess, stack, value);
212212
} else if (split.length > 1 && (split[0].equalsIgnoreCase("player") || split[0].equalsIgnoreCase("owner")) && hasMetaPermission(sender, "head", false, true, ess)) {
213-
if (MaterialUtil.isPlayerHead(stack.getType(), stack.getDurability())) {
213+
if (MaterialUtil.isPlayerHead(stack)) {
214214
final String owner = split[1];
215215
setSkullOwner(ess, stack, owner);
216216
} else {

Essentials/src/main/java/com/earth2me/essentials/Trade.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
44
import com.earth2me.essentials.craftbukkit.SetExpFix;
55
import com.earth2me.essentials.utils.NumberUtil;
6+
import com.earth2me.essentials.utils.VersionUtil;
67
import net.ess3.api.IEssentials;
78
import net.ess3.api.IUser;
89
import net.ess3.api.MaxMoneyException;
@@ -95,8 +96,10 @@ public static void log(final String type, final String subtype, final String eve
9596
} else {
9697
if (charge.getItemStack() != null) {
9798
sb.append(charge.getItemStack().getAmount()).append(",");
98-
sb.append(charge.getItemStack().getType().toString()).append(",");
99-
sb.append(charge.getItemStack().getDurability());
99+
sb.append(charge.getItemStack().getType()).append(",");
100+
if (VersionUtil.PRE_FLATTENING) {
101+
sb.append(charge.getItemStack().getDurability());
102+
}
100103
}
101104
if (charge.getMoney() != null) {
102105
sb.append(charge.getMoney()).append(",");
@@ -119,8 +122,10 @@ public static void log(final String type, final String subtype, final String eve
119122
} else {
120123
if (pay.getItemStack() != null) {
121124
sb.append(pay.getItemStack().getAmount()).append(",");
122-
sb.append(pay.getItemStack().getType().toString()).append(",");
123-
sb.append(pay.getItemStack().getDurability());
125+
sb.append(pay.getItemStack().getType()).append(",");
126+
if (VersionUtil.PRE_FLATTENING) {
127+
sb.append(pay.getItemStack().getDurability());
128+
}
124129
}
125130
if (pay.getMoney() != null) {
126131
sb.append(pay.getMoney()).append(",");

Essentials/src/main/java/com/earth2me/essentials/User.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -319,7 +319,7 @@ public Boolean canSpawnItem(final Material material) {
319319
if (isAuthorized("essentials.itemspawn.item-all") || isAuthorized("essentials.itemspawn.item-" + name))
320320
return true;
321321

322-
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
322+
if (VersionUtil.PRE_FLATTENING) {
323323
final int id = material.getId();
324324
if (isAuthorized("essentials.itemspawn.item-" + id)) return true;
325325
}

Essentials/src/main/java/com/earth2me/essentials/Worth.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@ public Worth(final File dataFolder) {
3030
* @return The price from the config.
3131
*/
3232
public BigDecimal getPrice(final IEssentials ess, final ItemStack itemStack) {
33-
BigDecimal result;
33+
BigDecimal result = BigDecimal.ONE.negate();
3434

3535
final String itemname = itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
3636

37-
// Check for matches with data value from stack
38-
// Note that we always default to BigDecimal.ONE.negate(), equivalent to -1
39-
result = config.getBigDecimal("worth." + itemname + "." + itemStack.getDurability(), BigDecimal.ONE.negate());
37+
if (VersionUtil.PRE_FLATTENING) {
38+
// Check for matches with data value from stack
39+
// Note that we always default to BigDecimal.ONE.negate(), equivalent to -1
40+
result = config.getBigDecimal("worth." + itemname + "." + itemStack.getDurability(), BigDecimal.ONE.negate());
41+
}
4042

4143
// Check for matches with data value 0
4244
if (result.signum() < 0) {
@@ -140,7 +142,7 @@ public void setPrice(final IEssentials ess, final ItemStack itemStack, final dou
140142
String path = "worth." + itemStack.getType().toString().toLowerCase(Locale.ENGLISH).replace("_", "");
141143

142144
// Spigot 1.13+ throws an exception if a 1.13+ plugin even *attempts* to do set data.
143-
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01) && itemStack.getType().getData() == null) {
145+
if (VersionUtil.PRE_FLATTENING && itemStack.getType().getData() == null) {
144146
// Bukkit-bug: getDurability still contains the correct value, while getData().getData() is 0.
145147
path = path + "." + itemStack.getDurability();
146148
}

Essentials/src/main/java/com/earth2me/essentials/commands/Commandclearinventory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ protected void clearHandler(final CommandSource sender, final Player player, fin
130130
} else {
131131
for (final Item item : items) {
132132
final ItemStack stack = new ItemStack(item.getMaterial());
133-
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
133+
if (VersionUtil.PRE_FLATTENING) {
134134
stack.setDurability(item.getData());
135135
}
136136
// amount -1 means all items will be cleared

Essentials/src/main/java/com/earth2me/essentials/commands/Commandcondense.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import com.earth2me.essentials.Trade;
55
import com.earth2me.essentials.Trade.OverflowType;
66
import com.earth2me.essentials.User;
7+
import com.earth2me.essentials.utils.VersionUtil;
78
import net.ess3.api.MaxMoneyException;
89
import org.bukkit.Material;
910
import org.bukkit.Server;
@@ -161,8 +162,7 @@ private Collection<ItemStack> getStackOnRecipeMatch(final Recipe recipe, final I
161162
iter.remove();
162163
continue;
163164
}
164-
165-
if (inputSlot.getDurability() == Short.MAX_VALUE) {
165+
if (VersionUtil.PRE_FLATTENING && inputSlot.getDurability() == Short.MAX_VALUE) {
166166
inputSlot.setDurability((short) 0);
167167
}
168168
if (!inputSlot.isSimilar(stack)) {

Essentials/src/main/java/com/earth2me/essentials/commands/Commandgive.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import com.earth2me.essentials.User;
66
import com.earth2me.essentials.craftbukkit.InventoryWorkaround;
77
import com.earth2me.essentials.utils.NumberUtil;
8+
import com.earth2me.essentials.utils.VersionUtil;
89
import com.google.common.collect.Lists;
910
import org.bukkit.Material;
1011
import org.bukkit.Server;
@@ -37,7 +38,7 @@ public void run(final Server server, final CommandSource sender, final String co
3738
}
3839

3940
try {
40-
if (args.length > 3 && NumberUtil.isInt(args[2]) && NumberUtil.isInt(args[3])) {
41+
if (args.length > 3 && VersionUtil.PRE_FLATTENING && NumberUtil.isInt(args[2]) && NumberUtil.isInt(args[3])) {
4142
stack.setAmount(Integer.parseInt(args[2]));
4243
stack.setDurability(Short.parseShort(args[3]));
4344
} else if (args.length > 2 && Integer.parseInt(args[2]) > 0) {

Essentials/src/main/java/com/earth2me/essentials/commands/Commanditemdb.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.earth2me.essentials.commands;
22

33
import com.earth2me.essentials.CommandSource;
4+
import com.earth2me.essentials.utils.MaterialUtil;
45
import com.earth2me.essentials.utils.StringUtil;
56
import com.earth2me.essentials.utils.VersionUtil;
67
import org.bukkit.Material;
@@ -36,7 +37,7 @@ protected void run(final Server server, final CommandSource sender, final String
3637

3738
String itemId = "none";
3839

39-
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
40+
if (VersionUtil.PRE_FLATTENING) {
4041
itemId = itemStack.getType().getId() + ":" + itemStack.getDurability();
4142
}
4243

@@ -49,7 +50,7 @@ protected void run(final Server server, final CommandSource sender, final String
4950

5051
if (itemHeld && itemStack.getType() != Material.AIR) {
5152
final int maxuses = itemStack.getType().getMaxDurability();
52-
final int durability = (maxuses + 1) - itemStack.getDurability();
53+
final int durability = (maxuses + 1) - MaterialUtil.getDamage(itemStack);
5354
if (maxuses != 0) {
5455
sender.sendMessage(tl("durability", Integer.toString(durability)));
5556
}

Essentials/src/main/java/com/earth2me/essentials/commands/Commandrecipe.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ public void shapedRecipe(final CommandSource sender, final ShapedRecipe recipe,
117117
if (item == null) {
118118
continue;
119119
}
120-
if (item.getDurability() == Short.MAX_VALUE) {
120+
if (VersionUtil.PRE_FLATTENING && item.getDurability() == Short.MAX_VALUE) {
121121
item.setDurability((short) 0);
122122
}
123123
view.getTopInventory().setItem(j * 3 + k + 1, item);
@@ -159,7 +159,7 @@ public void shapelessRecipe(final CommandSource sender, final ShapelessRecipe re
159159
final InventoryView view = user.getBase().openWorkbench(null, true);
160160
for (int i = 0; i < ingredients.size(); i++) {
161161
final ItemStack item = ingredients.get(i);
162-
if (item.getDurability() == Short.MAX_VALUE) {
162+
if (VersionUtil.PRE_FLATTENING && item.getDurability() == Short.MAX_VALUE) {
163163
item.setDurability((short) 0);
164164
}
165165
view.setItem(i + 1, item);

Essentials/src/main/java/com/earth2me/essentials/commands/Commandrepair.java

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.earth2me.essentials.ChargeException;
44
import com.earth2me.essentials.Trade;
55
import com.earth2me.essentials.User;
6+
import com.earth2me.essentials.utils.MaterialUtil;
67
import com.earth2me.essentials.utils.StringUtil;
78
import com.earth2me.essentials.utils.VersionUtil;
89
import com.google.common.collect.Lists;
@@ -39,7 +40,7 @@ public void run(final Server server, final User user, final String commandLabel,
3940

4041
public void repairHand(final User user) throws Exception {
4142
final ItemStack item = user.getItemInHand();
42-
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
43+
if (item == null || item.getType().isBlock() || MaterialUtil.getDamage(item) == 0) {
4344
throw new Exception(tl("repairInvalidType"));
4445
}
4546

@@ -81,16 +82,16 @@ private void repairItem(final ItemStack item) throws Exception {
8182
throw new Exception(tl("repairInvalidType"));
8283
}
8384

84-
if (item.getDurability() == 0) {
85+
if (MaterialUtil.getDamage(item) == 0) {
8586
throw new Exception(tl("repairAlreadyFixed"));
8687
}
8788

88-
item.setDurability((short) 0);
89+
MaterialUtil.setDamage(item, 0);
8990
}
9091

91-
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) throws Exception {
92+
private void repairItems(final ItemStack[] items, final IUser user, final List<String> repaired) {
9293
for (final ItemStack item : items) {
93-
if (item == null || item.getType().isBlock() || item.getDurability() == 0) {
94+
if (item == null || item.getType().isBlock() || MaterialUtil.getDamage(item) == 0) {
9495
continue;
9596
}
9697

@@ -123,7 +124,7 @@ private void repairItems(final ItemStack[] items, final IUser user, final List<S
123124

124125
private Trade getCharge(final Material material) {
125126
final String itemName = material.toString().toLowerCase(Locale.ENGLISH);
126-
if (VersionUtil.getServerBukkitVersion().isLowerThan(VersionUtil.v1_13_0_R01)) {
127+
if (VersionUtil.PRE_FLATTENING) {
127128
final int itemId = material.getId();
128129
return new Trade("repair-" + itemName.replace('_', '-'), new Trade("repair-" + itemId, new Trade("repair-item", ess), ess), ess);
129130
} else {

0 commit comments

Comments
 (0)