Skip to content

Commit

Permalink
handle legacy item ids less brokenly
Browse files Browse the repository at this point in the history
  • Loading branch information
mcmonkey4eva committed Dec 28, 2018
1 parent 24b0da6 commit 52ea4cb
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 2 deletions.
10 changes: 8 additions & 2 deletions plugin/src/main/java/net/aufdemrand/denizen/objects/dItem.java
Expand Up @@ -7,6 +7,7 @@
import net.aufdemrand.denizen.scripts.containers.core.ItemScriptContainer;
import net.aufdemrand.denizen.scripts.containers.core.ItemScriptHelper;
import net.aufdemrand.denizen.tags.BukkitTagContext;
import net.aufdemrand.denizen.utilities.MaterialCompat;
import net.aufdemrand.denizen.utilities.debugging.dB;
import net.aufdemrand.denizencore.objects.*;
import net.aufdemrand.denizencore.objects.notable.Notable;
Expand Down Expand Up @@ -225,12 +226,17 @@ public dItem(Material material) {

@Deprecated
public dItem(int itemId) {
this(new ItemStack(dMaterial.getLegacyMaterial(itemId)));
this(MaterialCompat.updateItem(itemId));
}

private static ItemStack fixQty(ItemStack item, int qty) {
item.setAmount(qty);
return item;
}

@Deprecated
public dItem(int itemId, int qty) {
this(new ItemStack(dMaterial.getLegacyMaterial(itemId), qty));
this(fixQty(MaterialCompat.updateItem(itemId), qty));
}

public dItem(Material material, int qty) {
Expand Down
Expand Up @@ -2,8 +2,11 @@

import net.aufdemrand.denizen.nms.NMSHandler;
import net.aufdemrand.denizen.nms.NMSVersion;
import net.aufdemrand.denizen.objects.dMaterial;
import org.bukkit.Bukkit;
import org.bukkit.DyeColor;
import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.inventory.ItemStack;

public class MaterialCompat {
Expand Down Expand Up @@ -109,6 +112,23 @@ public static ItemStack createPlayerHead() {
}
}

public static ItemStack updateItem(int oldMat) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R2)) {
Material mat = Bukkit.getUnsafe().fromLegacy(dMaterial.getLegacyMaterial(oldMat));
return new ItemStack(mat);
}
return new ItemStack(dMaterial.getLegacyMaterial(oldMat));
}

public static ItemStack updateItem(int oldMat, byte bit) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_13_R2)) {
BlockData blockDat = Bukkit.getUnsafe().fromLegacy(dMaterial.getLegacyMaterial(oldMat), bit);
Material mat = blockDat.getMaterial();
return new ItemStack(mat);
}
return new ItemStack(dMaterial.getLegacyMaterial(oldMat), bit);
}

public static boolean isBannerOrShield(Material material) {
if (NMSHandler.getVersion().isAtLeast(NMSVersion.v1_9_R2) && material == Material.SHIELD) {
return true;
Expand Down

0 comments on commit 52ea4cb

Please sign in to comment.