RuneHive-Game
Loading...
Searching...
No Matches
ItemCreation.java
Go to the documentation of this file.
1package com.runehive.content;
2
3import com.runehive.game.world.entity.skill.Skill;
4import com.runehive.game.world.items.Item;
5import com.runehive.util.Items;
6
7import java.util.Optional;
8
9/**
10 * Handles creating items with the use item packet listener.
11 *
12 * @author Daniel
13 */
14public class ItemCreation {
15
16 /** Holds the creation data. */
17 public enum CreationData {
18 SLAYER_HELM(new Item[]{new Item(11864)}, null, new Skill[]{new Skill(Skill.CRAFTING, 55, 0)}, new Item(8921), new Item(4166), new Item(4168), new Item(4164), new Item(4551), new Item(4155)),
19 SLAYER_HELM_I(new Item[]{new Item(11864)}, null, new Skill[]{new Skill(Skill.CRAFTING, 55, 0)}, new Item(8901), new Item(4166), new Item(4168), new Item(4164), new Item(4551), new Item(4155)),
20 BLACK_SLAYER_HELM(new Item[]{new Item(19639)}, null, null, new Item(11864), new Item(7980)),
21 BLACK_SLAYER_HELM_I(new Item[]{new Item(19641)}, null, null, new Item(11865), new Item(7980)),
22 GREEN_SLAYER_HELM(new Item[]{new Item(19643)}, null, null, new Item(11864), new Item(7981)),
23 GREEN_SLAYER_HELMI(new Item[]{new Item(19645)}, null, null, new Item(11865), new Item(7981)),
24 RED_SLAYER_HELM(new Item[]{new Item(19647)}, null, null, new Item(11864), new Item(7979)),
25 RED_SLAYER_HELMI(new Item[]{new Item(19649)}, null, null, new Item(11865), new Item(7979)),
26 PURPLE_SLAYER_HELM(new Item[]{new Item(21264)}, null, null, new Item(11864), new Item(21275)),
27 PURPLE_SLAYER_HELMI(new Item[]{new Item(21266)}, null, null, new Item(11865), new Item(21275)),
28 ARMADYL_GODSWORD(new Item[]{new Item(11802)}, null, null, new Item(11798), new Item(11810)),
29 BANDOS_GODSWORD(new Item[]{new Item(11804)}, null, null, new Item(11798), new Item(11812)),
30 SARADOMIN_GODSWORD(new Item[]{new Item(11806)}, null, null, new Item(11798), new Item(11814)),
31 ZAMORAK_GODSWORD(new Item[]{new Item(11808)}, null, null, new Item(11798), new Item(11816)),
32 PRIMORDIAL_BOOTS(new Item[]{new Item(13239)}, null, new Skill[] { new Skill(Skill.RUNECRAFTING, 60,0), new Skill(Skill.MAGIC, 60, 0) }, new Item(11840), new Item(13231)),
33 ETERNAL_BOOTS(new Item[]{new Item(13235)}, null, new Skill[] { new Skill(Skill.RUNECRAFTING, 60,0), new Skill(Skill.MAGIC, 60, 0) }, new Item(6920), new Item(13227)),
34 PEGASIAN_BOOTS(new Item[]{new Item(13237)}, null, new Skill[] { new Skill(Skill.RUNECRAFTING, 60,0), new Skill(Skill.MAGIC, 60, 0) }, new Item(2577), new Item(13229)),
35 INFERNAL_AXE(new Item[]{new Item(13241)}, null, new Skill[] { new Skill(Skill.WOODCUTTING, 61,0), new Skill(Skill.FIREMAKING, 85, 0) }, new Item(6739), new Item(13233)),
36 INFERNAL_PICKAXE(new Item[]{new Item(13243)}, null, new Skill[] { new Skill(Skill.SMITHING, 85,0) }, new Item(11920), new Item(13233)),
37 INFERNAL_HARPOON(new Item[]{new Item(21031)}, null, new Skill[] { new Skill(Skill.COOKING, 85,0) }, new Item(21028), new Item(13233)),
38 BLESSED_SPIRIT_SHIELD(new Item(12831), null, null, new Item(12829), new Item(12833)),
39 GODSWORD_SHARDS_1_AND_2(new Item[]{new Item(11794)}, null, null, new Item(11818), new Item(11820)),
40 GODSWORD_SHARDS_2_AND_3(new Item[]{new Item(11800)}, null, null, new Item(11822), new Item(11820)),
41 GODSWORD_SHARDS_1_AND_3(new Item[]{new Item(11796)}, null, null, new Item(11818), new Item(11822)),
42 GODSWORD_BLADE(new Item[]{new Item(11798)}, null, new Skill[] { new Skill(Skill.SMITHING, 80,0) }, new Item(11822), new Item(11794)),
43 GODSWORD_BLADE_I(new Item[]{new Item(11798)}, null, new Skill[] { new Skill(Skill.SMITHING, 80,0) }, new Item(11818), new Item(11800)),
44 GODSWORD_BLADE_II(new Item[]{new Item(11798)}, null, new Skill[] { new Skill(Skill.SMITHING, 80,0) }, new Item(11820), new Item(11796)),
45 TOXIC_BLOWPIPE(new Item(12924), null, new Skill[] { new Skill(Skill.FLETCHING, 53, 0)}, new Item(12922, 1), new Item(1755, 1)),
46 TOXIC_STAFF_OF_THE_DEAD(new Item(12904), null, new Skill[]{new Skill(Skill.CRAFTING, 59, 0)}, new Item(11791, 1), new Item(12932, 1)),
47 TRIDENT_OF_THE_SWAMP(new Item(12899), null, new Skill[]{new Skill(Skill.CRAFTING, 59, 0)}, new Item(12932, 1), new Item(11907, 1)),
48 DRAGON_PICKAXE(new Item(12797), null, null, new Item(11920, 1), new Item(12800, 1)),
49 MAGIC_SHORTBOW_INFUSED(new Item(12788), new Item(861), null, new Item(12786, 1), new Item(861, 1)),
50 ABYSSAL_TENTACLE_WHIP(new Item(12006, 1), new Item(12004, 1), null, new Item(12004, 1), new Item(4151, 1)),
51 ABYSSAL_VOLCANIC_WHIP(new Item(12773), new Item(4151, 1), null, new Item(12771, 1), new Item(4151, 1)),
52 ABYSSAL_FROZEN_WHIP(new Item(12774), new Item(4151, 1), null, new Item(12769, 1), new Item(4151, 1)),
53 BLUE_DARKBOW(new Item(12766), new Item(11235, 1), null, new Item(12757, 1), new Item(11235, 1)),
54 YELLOW_DARKBOW(new Item(12767), new Item(11235, 1), null, new Item(12761, 1), new Item(11235, 1)),
55 GREEN_DARKBOW(new Item(12765), new Item(11235, 1), null, new Item(12759, 1), new Item(11235, 1)),
56 WHITE_DARKBOW(new Item(12768), new Item(11235, 1), null, new Item(12763, 1), new Item(11235, 1)),
57
58 SERPENTINE_VISAGE(new Item(12929), new Item(12927, 1), null, new Item(12927, 1), new Item(1755, 1)),
59 FURY_AMULET_KIT(new Item(12436), null, null, new Item(6585, 1), new Item(12526, 1)),
60 CAP_AND_GOGGLES(new Item(9946), null, null, new Item(9945, 1), new Item(9472, 1)),
61 RING_OF_WEALTH_I(new Item(12785), null, null, new Item(12783, 1), new Item(2572, 1)),
62 DRAGON_FIRE_SHIELD(new Item(11283), null, null, new Item(11286,1 ), new Item(1540,1)),
63
64 GOLDEN_PROS_HELM(new Item(25549), null, null, new Item(25547, 1), new Item(12013, 1)),
65 GOLDEN_PROS_JACKET(new Item(25551), null, null, new Item(25547, 1), new Item(12014, 1)),
66 GOLDEN_PROS_LEGS(new Item(25553), null, null, new Item(25547, 1), new Item(12015, 1)),
67 GOLDEN_PROS_BOOTS(new Item(25555), null, null, new Item(25547, 1), new Item(12016, 1)),
68 ZENYTE_AMULET(new Item(19541), null,new Skill[] { new Skill(Skill.CRAFTING, 98,200) }, new Item(Items.GOLD_BAR, 1), new Item(Items.AMULET_MOULD, 1), new Item(Items.ZENYTE)),
69
70 ZENYTE_NECKLACE(new Item(19535), null,new Skill[] { new Skill(Skill.CRAFTING, 92,165) }, new Item(Items.GOLD_BAR, 1), new Item(Items.NECKLACE_MOULD, 1), new Item(Items.ZENYTE)),
71
72 ZENYTE_RING(new Item(19538), null,new Skill[] { new Skill(Skill.CRAFTING, 89,150) }, new Item(Items.GOLD_BAR, 1), new Item(Items.RING_MOULD, 1), new Item(Items.ZENYTE)),
73
74
75 ZENYTE_BRACELET(new Item(19492), null,new Skill[] { new Skill(Skill.CRAFTING, 95,180) }, new Item(Items.GOLD_BAR, 1), new Item(Items.BRACELET_MOULD, 1), new Item(Items.ZENYTE)),
76 /** Max Capes */
77 FIRE_MAX_CAPE(new Item[]{new Item(13329), new Item(13330)}, null, null, new Item(6570), new Item(13280), new Item(13281)),
78 SARADOMIN_MAX_CAPE(new Item[]{new Item(13331), new Item(13332)}, null, null, new Item(10446), new Item(13280), new Item(13281)),
79 ZAMORAK_MAX_CAPE(new Item[]{new Item(13333), new Item(13334)}, null, null, new Item(10450), new Item(13280), new Item(13281)),
80 GUTHIX_MAX_CAPE(new Item[]{new Item(13335), new Item(13336)}, null, null, new Item(10448), new Item(13280), new Item(13281)),
81 AVA2_MAX_CAPE(new Item[]{new Item(13337), new Item(13338)}, null, null, new Item(10499), new Item(13280), new Item(13281)),//22109
82 ASSEMBLER_MAX_CAPE(new Item[]{new Item(21898), new Item(21900)}, null, null, new Item(22109), new Item(13280), new Item(13281)),
83 INFERNAL_MAX_CAPE(new Item[]{new Item(21284), new Item(21282)}, null, null, new Item(21295), new Item(13280), new Item(13281)),
84 IMBUED_SARADOMIN_MAX_CAPE(new Item[]{new Item(21776), new Item(21778)}, null, null, new Item(21791), new Item(13280), new Item(13281)),
85 IMBUED_ZAMORAK_MAX_CAPE(new Item[]{new Item(21780), new Item(21782)}, null, null, new Item(21795), new Item(13280), new Item(13281)),
86 IMBUED_GUTHIX_MAX_CAPE(new Item[]{new Item(21784), new Item(21786)}, null, null, new Item(21793), new Item(13280), new Item(13281));
87
88
89 /** The product of the creation. */
90 public final Item[] product;
91
92 /** The dropped item. */
93 public final Item dropped;
94
95 /** The skill required. */
96 public final Skill[] level;
97
98 /** The items required. */
99 public final Item[] required;
100
101 /** Constructs a new <code>CreationData</code>. */
103 this.product = new Item[]{product};
104 this.dropped = dropped;
105 this.level = level;
106 this.required = required;
107 }
108
109 /** Constructs a new <code>CreationData</code>. */
111 this.product = product;
112 this.dropped = dropped;
113 this.level = level;
114 this.required = required;
115 }
116
117 /** Handles finding the creation data based off the items used. */
118 public static Optional<CreationData> forItems(Item first, Item second) {
119 for (CreationData data : CreationData.values()) {
120 int found = 0;
121 for (Item items : data.required) {
122 if (items.getId() == first.getId() || items.getId() == second.getId())
123 found++;
124 }
125 if (found >= 2) return Optional.of(data);
126 }
127 return Optional.empty();
128 }
129
130 /** Finds the creation data based off the product item. */
131 public static Optional<CreationData> forItem(Item item) {
132 for (CreationData data : CreationData.values()) {
133 for (Item items : data.product) {
134 if (item.getId() == items.getId())
135 return Optional.of(data);
136 }
137 }
138 return Optional.empty();
139 }
140 }
141
142 /** Handles creation items on death. */
143 public static Item onDeath(Item item) {
144 Optional<CreationData> data = CreationData.forItem(item);
145 return data.isPresent() && data.get().dropped != null ? data.get().dropped : item;
146 }
147}
Handles creating items with the use item packet listener.
static Item onDeath(Item item)
Handles creation items on death.
Represents a trainable and usable skill.
Definition Skill.java:18
static final int WOODCUTTING
The woodcutting skill id.
Definition Skill.java:45
static final int CRAFTING
The crafting skill id.
Definition Skill.java:57
static final int SMITHING
The smithing skill id.
Definition Skill.java:60
static final int FLETCHING
The fletching skill id.
Definition Skill.java:48
static final int FIREMAKING
The firemaking skill id.
Definition Skill.java:54
static final int MAGIC
The magic skill id.
Definition Skill.java:39
static final int COOKING
The cooking skill id.
Definition Skill.java:42
static final int RUNECRAFTING
The runecrafting skill id.
Definition Skill.java:81
The container class that represents an item that can be interacted with.
Definition Item.java:21
final int getId()
Gets the identification of this item.
Definition Item.java:324
static final int NECKLACE_MOULD
Definition Items.java:1602
static final int BRACELET_MOULD
Definition Items.java:11070
static final int AMULET_MOULD
Definition Items.java:1600
static final int RING_MOULD
Definition Items.java:1597
static final int ZENYTE
Definition Items.java:19498
static final int GOLD_BAR
Definition Items.java:2362
static Optional< CreationData > forItem(Item item)
Finds the creation data based off the product item.
static Optional< CreationData > forItems(Item first, Item second)
Handles finding the creation data based off the items used.
final Item[] product
The product of the creation.
final Item[] required
The items required.
CreationData(Item[] product, Item dropped, Skill[] level, Item... required)
Constructs a new CreationData.
CreationData(Item product, Item dropped, Skill[] level, Item... required)
Constructs a new CreationData.
final Skill[] level
The skill required.