From 205d8e45b3dfc0cdc6bd320e75cf6864b68ac2de Mon Sep 17 00:00:00 2001 From: Mokun Mokkun Date: Sun, 20 Mar 2022 08:36:17 +0000 Subject: [PATCH] Rewrote how Entrana item restrictions work, fixes various issues --- .../core/cache/def/impl/ItemDefinition.java | 78 ++++++++++++++----- 1 file changed, 57 insertions(+), 21 deletions(-) diff --git a/Server/src/main/java/core/cache/def/impl/ItemDefinition.java b/Server/src/main/java/core/cache/def/impl/ItemDefinition.java index 80c4c15b7..bf222cbff 100644 --- a/Server/src/main/java/core/cache/def/impl/ItemDefinition.java +++ b/Server/src/main/java/core/cache/def/impl/ItemDefinition.java @@ -18,11 +18,14 @@ import core.plugin.Plugin; import core.tools.StringUtils; import rs09.game.system.SystemLogger; import rs09.game.system.config.ItemConfigParser; +import org.rs09.consts.Items; import java.nio.ByteBuffer; import java.text.DecimalFormat; import java.util.HashMap; +import java.util.HashSet; import java.util.Map; +import java.util.Arrays; /** * Represents an item's definitions. @@ -678,39 +681,72 @@ public class ItemDefinition extends Definition { } /** - * The allowed names. + * The allowed ids. */ - private static final String[] allowedNames = new String[] { "cape", "robe", "hat", "potion" }; + private static final HashSet allowedItems = new HashSet(Arrays.asList( + Items.PENANCE_GLOVES_10553, + Items.ICE_GLOVES_1580, + Items.BOOTS_OF_LIGHTNESS_88, + Items.CLIMBING_BOOTS_3105, + Items.SPOTTED_CAPE_10069, + Items.SPOTTIER_CAPE_10071, + Items.SARADOMIN_CAPE_2412, + Items.ZAMORAK_CAPE_2414, + Items.GUTHIX_CAPE_2413, + Items.SARADOMIN_CLOAK_10446, + Items.ZAMORAK_CLOAK_10450, + Items.GUTHIX_CLOAK_10448, + Items.HOLY_BOOK_3840, + Items.DAMAGED_BOOK_3839, + Items.UNHOLY_BOOK_3842, + Items.DAMAGED_BOOK_3841, + Items.BOOK_OF_BALANCE_3844, + Items.DAMAGED_BOOK_3843, + Items.WIZARD_BOOTS_2579, + Items.COMBAT_BRACELET1_11124, + Items.COMBAT_BRACELET2_11122, + Items.COMBAT_BRACELET3_11120, + Items.COMBAT_BRACELET4_11118, + Items.REGEN_BRACELET_11133, + Items.WARLOCK_CLOAK_14081, + Items.WARLOCK_LEGS_14077, + Items.WARLOCK_TOP_14076 + )); + private static final HashSet bannedItems = new HashSet(Arrays.asList( + /**Items.BUTTERFLY_NET_10010, easing the restriction until barehanded implementation**/ + Items.DWARF_CANNON_SET_11967, + Items.CANNON_BARRELS_10, + Items.CANNON_BASE_6, + Items.CANNON_STAND_8, + Items.CANNON_FURNACE_12, + Items.COOKING_GAUNTLETS_775, + Items.CHAOS_GAUNTLETS_777, + Items.GOLDSMITH_GAUNTLETS_776, + Items.KARAMJA_GLOVES_1_11136, + Items.KARAMJA_GLOVES_2_11138, + Items.KARAMJA_GLOVES_3_11140, + Items.VYREWATCH_TOP_9634, + Items.VYREWATCH_LEGS_9636, + Items.VYREWATCH_SHOES_9638 + )); + /** * Checks if the item is allowed on entrana. * @return {@code True} if so. */ public boolean isAllowedOnEntrana() { - if (getId() == 946) { + if(allowedItems.contains(getId())) { return true; } - if (getName().equals("Boots")) { - return true; + if(bannedItems.contains(getId())) { + return false; } if (getName().toLowerCase().startsWith("ring") || getName().toLowerCase().startsWith("amulet")) { return true; } - if (getName().toLowerCase().contains("spotted") || getName().toLowerCase().equals("spottier")) { - return true; - } - if (getName().equals("Boots of lightness")) { - return true; - } - if(getName().toLowerCase().contains("arrow") || getName().toLowerCase().contains("bolt")){ - return false; - } - for (String name : allowedNames) { - if (getName().toLowerCase().contains(name)) { - return true; - } - } - return getConfiguration(ItemConfigParser.BONUS) == null; + int[] bonuses = getConfiguration(ItemConfigParser.BONUS); + return bonuses == null || Arrays.stream(bonuses).allMatch(x -> x == 0); } /** @@ -1661,4 +1697,4 @@ public class ItemDefinition extends Definition { public void setMaleWornModelId4(int maleWornModelId4) { this.maleWornModelId4 = maleWornModelId4; } -} \ No newline at end of file +}