diff --git a/runelite-api/src/main/java/net/runelite/api/kit/KitType.java b/runelite-api/src/main/java/net/runelite/api/kit/KitType.java
index 67876def5b..0ecf57790a 100644
--- a/runelite-api/src/main/java/net/runelite/api/kit/KitType.java
+++ b/runelite-api/src/main/java/net/runelite/api/kit/KitType.java
@@ -26,6 +26,7 @@ package net.runelite.api.kit;
import lombok.AllArgsConstructor;
import lombok.Getter;
+import net.runelite.api.widgets.WidgetInfo;
/**
* Represents an equipment slot in a players composition.
@@ -39,19 +40,19 @@ import lombok.Getter;
@AllArgsConstructor
public enum KitType
{
- HELMET("Helmet", 0),
- CAPE("Cape", 1),
- AMULET("Amulet", 2),
- WEAPON("Weapon", 3),
- TORSO("Torso", 4),
- SHIELD("Shield", 5),
- LEGS("Legs", 7),
- HEAD("Head", 8),
- HANDS("Hands", 9),
- BOOTS("Boots", 10),
- JAW("Jaw", 11),
- RING("Ring", 12),
- AMMUNITION("Ammo", 13);
+ HELMET("Helmet", 0, WidgetInfo.EQUIPMENT_HELMET),
+ CAPE("Cape", 1, WidgetInfo.EQUIPMENT_CAPE),
+ AMULET("Amulet", 2, WidgetInfo.EQUIPMENT_AMULET),
+ WEAPON("Weapon", 3, WidgetInfo.EQUIPMENT_WEAPON),
+ TORSO("Torso", 4, WidgetInfo.EQUIPMENT_BODY),
+ SHIELD("Shield", 5, WidgetInfo.EQUIPMENT_SHIELD),
+ LEGS("Legs", 7, WidgetInfo.EQUIPMENT_LEGS),
+ HEAD("Head", 8, null),
+ HANDS("Hands", 9, WidgetInfo.EQUIPMENT_GLOVES),
+ BOOTS("Boots", 10, WidgetInfo.EQUIPMENT_BOOTS),
+ JAW("Jaw", 11, null),
+ RING("Ring", 12, WidgetInfo.EQUIPMENT_RING),
+ AMMUNITION("Ammo", 13, WidgetInfo.EQUIPMENT_AMMO);
private final String name;
@@ -59,4 +60,6 @@ public enum KitType
* Gets the raw equipment index for use in {PlayerAppearance#getEquipmentIds()}.
*/
private final int index;
-}
+
+ private final WidgetInfo widgetInfo;
+}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
index c664425e9a..46b5b4a218 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetID.java
@@ -315,6 +315,17 @@ public class WidgetID
static class Equipment
{
+ static final int HELMET = 14;
+ static final int CAPE = 15;
+ static final int AMULET = 16;
+ static final int WEAPON = 17;
+ static final int BODY = 18;
+ static final int SHIELD = 19;
+ static final int LEGS = 20;
+ static final int GLOVES = 21;
+ static final int BOOTS = 22;
+ static final int RING = 23;
+ static final int AMMO = 24;
static final int INVENTORY_ITEM_CONTAINER = 0;
}
@@ -1202,4 +1213,4 @@ public class WidgetID
{
static final int CONTAINER = 0;
}
-}
+}
\ No newline at end of file
diff --git a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
index e7c426defd..fe181fbf92 100644
--- a/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
+++ b/runelite-api/src/main/java/net/runelite/api/widgets/WidgetInfo.java
@@ -63,6 +63,18 @@ public enum WidgetInfo
EQUIPMENT(WidgetID.EQUIPMENT_GROUP_ID, 0),
EQUIPMENT_INVENTORY_ITEMS_CONTAINER(WidgetID.EQUIPMENT_INVENTORY_GROUP_ID, WidgetID.Equipment.INVENTORY_ITEM_CONTAINER),
+ EQUIPMENT_HELMET(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.HELMET),
+ EQUIPMENT_CAPE(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.CAPE),
+ EQUIPMENT_AMULET(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.AMULET),
+ EQUIPMENT_WEAPON(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.WEAPON),
+ EQUIPMENT_BODY(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.BODY),
+ EQUIPMENT_SHIELD(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.SHIELD),
+ EQUIPMENT_LEGS(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.LEGS),
+ EQUIPMENT_GLOVES(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.GLOVES),
+ EQUIPMENT_BOOTS(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.BOOTS),
+ EQUIPMENT_RING(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.RING),
+ EQUIPMENT_AMMO(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.AMMO),
+
EMOTE_WINDOW(WidgetID.EMOTES_GROUP_ID, WidgetID.Emotes.EMOTE_WINDOW),
EMOTE_CONTAINER(WidgetID.EMOTES_GROUP_ID, WidgetID.Emotes.EMOTE_CONTAINER),
EMOTE_SCROLLBAR(WidgetID.EMOTES_GROUP_ID, WidgetID.Emotes.EMOTE_SCROLLBAR),
@@ -860,4 +872,4 @@ public enum WidgetInfo
return groupId << 16 | childId;
}
-}
+}
\ No newline at end of file
diff --git a/runelite-client/src/main/java/net/runelite/client/database/GenerateClasses.java b/runelite-client/src/main/java/net/runelite/client/database/GenerateClasses.java
index dc595527d5..f6125b55e1 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/GenerateClasses.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/GenerateClasses.java
@@ -26,7 +26,7 @@ public class GenerateClasses
)
.withTarget(new Target()
.withPackageName("net.runelite.client.database.data")
- .withDirectory("runelite-client/src/main/java/net/runelite/client/database/data")
+ .withDirectory("runelite-client/src/main/java/")
)
);
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/DefaultCatalog.java b/runelite-client/src/main/java/net/runelite/client/database/data/DefaultCatalog.java
index 4a2a9d4eff..139bcaf234 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/DefaultCatalog.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/DefaultCatalog.java
@@ -7,7 +7,7 @@ package net.runelite.client.database.data;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import org.jooq.Schema;
import org.jooq.impl.CatalogImpl;
@@ -18,7 +18,7 @@ import org.jooq.impl.CatalogImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -26,7 +26,7 @@ import org.jooq.impl.CatalogImpl;
public class DefaultCatalog extends CatalogImpl
{
- private static final long serialVersionUID = 836257769;
+ private static final long serialVersionUID = -102989253;
/**
* The reference instance of
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/Indexes.java b/runelite-client/src/main/java/net/runelite/client/database/data/Indexes.java
index b736e0093e..72626efa54 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/Indexes.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/Indexes.java
@@ -4,10 +4,11 @@
package net.runelite.client.database.data;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.tables.Loottrackerevents;
import net.runelite.client.database.data.tables.Loottrackerlink;
import net.runelite.client.database.data.tables.Loottrackerloot;
+import net.runelite.client.database.data.tables.TmorphSets;
import net.runelite.client.database.data.tables.User;
import org.jooq.Index;
import org.jooq.OrderField;
@@ -20,7 +21,7 @@ import org.jooq.impl.Internal;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -33,11 +34,13 @@ public class Indexes
// -------------------------------------------------------------------------
public static final Index PRIMARY_KEY_B = Indexes0.PRIMARY_KEY_B;
+ public static final Index FK_LOOTTRACKERDROP_INDEX_6 = Indexes0.FK_LOOTTRACKERDROP_INDEX_6;
public static final Index FK_LOOTTRACKEREVENT_INDEX_6 = Indexes0.FK_LOOTTRACKEREVENT_INDEX_6;
- public static final Index FK_LOOTTRACKERLOOT_INDEX_6 = Indexes0.FK_LOOTTRACKERLOOT_INDEX_6;
- public static final Index PRIMARY_KEY_6B = Indexes0.PRIMARY_KEY_6B;
+ public static final Index FK_USER_INDEX_6 = Indexes0.FK_USER_INDEX_6;
public static final Index PRIMARY_KEY_6 = Indexes0.PRIMARY_KEY_6;
+ public static final Index TMORPH_SETS_SET_NAME_UINDEX = Indexes0.TMORPH_SETS_SET_NAME_UINDEX;
public static final Index PRIMARY_KEY_2 = Indexes0.PRIMARY_KEY_2;
+ public static final Index UN_USERNAME_INDEX_2 = Indexes0.UN_USERNAME_INDEX_2;
// -------------------------------------------------------------------------
// [#1459] distribute members to avoid static initialisers > 64kb
@@ -46,10 +49,12 @@ public class Indexes
private static class Indexes0
{
public static Index PRIMARY_KEY_B = Internal.createIndex("PRIMARY_KEY_B", Loottrackerevents.LOOTTRACKEREVENTS, new OrderField[]{Loottrackerevents.LOOTTRACKEREVENTS.UNIQUEID}, true);
+ public static Index FK_LOOTTRACKERDROP_INDEX_6 = Internal.createIndex("FK_LOOTTRACKERDROP_INDEX_6", Loottrackerlink.LOOTTRACKERLINK, new OrderField[]{Loottrackerlink.LOOTTRACKERLINK.DROPUNIQUEID}, false);
public static Index FK_LOOTTRACKEREVENT_INDEX_6 = Internal.createIndex("FK_LOOTTRACKEREVENT_INDEX_6", Loottrackerlink.LOOTTRACKERLINK, new OrderField[]{Loottrackerlink.LOOTTRACKERLINK.EVENTUNIQUEID}, false);
- public static Index FK_LOOTTRACKERLOOT_INDEX_6 = Internal.createIndex("FK_LOOTTRACKERLOOT_INDEX_6", Loottrackerlink.LOOTTRACKERLINK, new OrderField[]{Loottrackerlink.LOOTTRACKERLINK.DROPUNIQUEID}, false);
- public static Index PRIMARY_KEY_6B = Internal.createIndex("PRIMARY_KEY_6B", Loottrackerlink.LOOTTRACKERLINK, new OrderField[]{Loottrackerlink.LOOTTRACKERLINK.LINKUNIQUEID}, true);
+ public static Index FK_USER_INDEX_6 = Internal.createIndex("FK_USER_INDEX_6", Loottrackerlink.LOOTTRACKERLINK, new OrderField[]{Loottrackerlink.LOOTTRACKERLINK.USERUNIQUEID}, false);
public static Index PRIMARY_KEY_6 = Internal.createIndex("PRIMARY_KEY_6", Loottrackerloot.LOOTTRACKERLOOT, new OrderField[]{Loottrackerloot.LOOTTRACKERLOOT.UNIQUEID}, true);
+ public static Index TMORPH_SETS_SET_NAME_UINDEX = Internal.createIndex("TMORPH_SETS_SET_NAME_UINDEX", TmorphSets.TMORPH_SETS, new OrderField[]{TmorphSets.TMORPH_SETS.SET_NAME}, true);
public static Index PRIMARY_KEY_2 = Internal.createIndex("PRIMARY_KEY_2", User.USER, new OrderField[]{User.USER.UNIQUEID}, true);
+ public static Index UN_USERNAME_INDEX_2 = Internal.createIndex("UN_USERNAME_INDEX_2", User.USER, new OrderField[]{User.USER.USERNAME}, true);
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/Keys.java b/runelite-client/src/main/java/net/runelite/client/database/data/Keys.java
index fc561055c9..2f01544f08 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/Keys.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/Keys.java
@@ -4,7 +4,7 @@
package net.runelite.client.database.data;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.tables.Loottrackerevents;
import net.runelite.client.database.data.tables.Loottrackerlink;
import net.runelite.client.database.data.tables.Loottrackerloot;
@@ -25,7 +25,7 @@ import org.jooq.impl.Internal;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -42,17 +42,17 @@ public class Keys
// UNIQUE and PRIMARY KEY definitions
// -------------------------------------------------------------------------
- public static final UniqueKey PK_EVENTUNIQUEID = UniqueKeys0.PK_EVENTUNIQUEID;
- public static final UniqueKey PK_LOOTTRACKERLINK = UniqueKeys0.PK_LOOTTRACKERLINK;
- public static final UniqueKey PK_LOOTUNIQUEID = UniqueKeys0.PK_LOOTUNIQUEID;
+ public static final UniqueKey PK_LOOTTRACKEREVENTS = UniqueKeys0.PK_LOOTTRACKEREVENTS;
+ public static final UniqueKey PK_LOOTTRACKERDROPS = UniqueKeys0.PK_LOOTTRACKERDROPS;
public static final UniqueKey PK_USER = UniqueKeys0.PK_USER;
+ public static final UniqueKey UN_USERNAME = UniqueKeys0.UN_USERNAME;
// -------------------------------------------------------------------------
// FOREIGN KEY definitions
// -------------------------------------------------------------------------
public static final ForeignKey FK_LOOTTRACKEREVENT = ForeignKeys0.FK_LOOTTRACKEREVENT;
- public static final ForeignKey FK_LOOTTRACKERLOOT = ForeignKeys0.FK_LOOTTRACKERLOOT;
+ public static final ForeignKey FK_LOOTTRACKERDROP = ForeignKeys0.FK_LOOTTRACKERDROP;
public static final ForeignKey FK_USER = ForeignKeys0.FK_USER;
// -------------------------------------------------------------------------
@@ -61,16 +61,16 @@ public class Keys
private static class UniqueKeys0
{
- public static final UniqueKey PK_EVENTUNIQUEID = Internal.createUniqueKey(Loottrackerevents.LOOTTRACKEREVENTS, "PK_EVENTUNIQUEID", Loottrackerevents.LOOTTRACKEREVENTS.UNIQUEID);
- public static final UniqueKey PK_LOOTTRACKERLINK = Internal.createUniqueKey(Loottrackerlink.LOOTTRACKERLINK, "PK_LOOTTRACKERLINK", Loottrackerlink.LOOTTRACKERLINK.LINKUNIQUEID);
- public static final UniqueKey PK_LOOTUNIQUEID = Internal.createUniqueKey(Loottrackerloot.LOOTTRACKERLOOT, "PK_LOOTUNIQUEID", Loottrackerloot.LOOTTRACKERLOOT.UNIQUEID);
+ public static final UniqueKey PK_LOOTTRACKEREVENTS = Internal.createUniqueKey(Loottrackerevents.LOOTTRACKEREVENTS, "PK_LOOTTRACKEREVENTS", Loottrackerevents.LOOTTRACKEREVENTS.UNIQUEID);
+ public static final UniqueKey PK_LOOTTRACKERDROPS = Internal.createUniqueKey(Loottrackerloot.LOOTTRACKERLOOT, "PK_LOOTTRACKERDROPS", Loottrackerloot.LOOTTRACKERLOOT.UNIQUEID);
public static final UniqueKey PK_USER = Internal.createUniqueKey(User.USER, "PK_USER", User.USER.UNIQUEID);
+ public static final UniqueKey UN_USERNAME = Internal.createUniqueKey(User.USER, "UN_USERNAME", User.USER.USERNAME);
}
private static class ForeignKeys0
{
- public static final ForeignKey FK_LOOTTRACKEREVENT = Internal.createForeignKey(net.runelite.client.database.data.Keys.PK_EVENTUNIQUEID, Loottrackerlink.LOOTTRACKERLINK, "FK_LOOTTRACKEREVENT", Loottrackerlink.LOOTTRACKERLINK.EVENTUNIQUEID);
- public static final ForeignKey FK_LOOTTRACKERLOOT = Internal.createForeignKey(net.runelite.client.database.data.Keys.PK_LOOTUNIQUEID, Loottrackerlink.LOOTTRACKERLINK, "FK_LOOTTRACKERLOOT", Loottrackerlink.LOOTTRACKERLINK.DROPUNIQUEID);
- public static final ForeignKey FK_USER = Internal.createForeignKey(net.runelite.client.database.data.Keys.PK_USER, Loottrackerlink.LOOTTRACKERLINK, "FK_USER", Loottrackerlink.LOOTTRACKERLINK.DROPUNIQUEID);
+ public static final ForeignKey FK_LOOTTRACKEREVENT = Internal.createForeignKey(net.runelite.client.database.data.Keys.PK_LOOTTRACKEREVENTS, Loottrackerlink.LOOTTRACKERLINK, "FK_LOOTTRACKEREVENT", Loottrackerlink.LOOTTRACKERLINK.EVENTUNIQUEID);
+ public static final ForeignKey FK_LOOTTRACKERDROP = Internal.createForeignKey(net.runelite.client.database.data.Keys.PK_LOOTTRACKERDROPS, Loottrackerlink.LOOTTRACKERLINK, "FK_LOOTTRACKERDROP", Loottrackerlink.LOOTTRACKERLINK.DROPUNIQUEID);
+ public static final ForeignKey FK_USER = Internal.createForeignKey(net.runelite.client.database.data.Keys.PK_USER, Loottrackerlink.LOOTTRACKERLINK, "FK_USER", Loottrackerlink.LOOTTRACKERLINK.USERUNIQUEID);
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/Public.java b/runelite-client/src/main/java/net/runelite/client/database/data/Public.java
index 7120f8ad40..b560fe5538 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/Public.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/Public.java
@@ -7,10 +7,11 @@ package net.runelite.client.database.data;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.tables.Loottrackerevents;
import net.runelite.client.database.data.tables.Loottrackerlink;
import net.runelite.client.database.data.tables.Loottrackerloot;
+import net.runelite.client.database.data.tables.TmorphSets;
import net.runelite.client.database.data.tables.User;
import org.jooq.Catalog;
import org.jooq.Table;
@@ -23,7 +24,7 @@ import org.jooq.impl.SchemaImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -31,7 +32,7 @@ import org.jooq.impl.SchemaImpl;
public class Public extends SchemaImpl
{
- private static final long serialVersionUID = 1499404561;
+ private static final long serialVersionUID = 1268129010;
/**
* The reference instance of PUBLIC
@@ -53,6 +54,11 @@ public class Public extends SchemaImpl
*/
public final Loottrackerloot LOOTTRACKERLOOT = net.runelite.client.database.data.tables.Loottrackerloot.LOOTTRACKERLOOT;
+ /**
+ * The table PUBLIC.TMORPH_SETS.
+ */
+ public final TmorphSets TMORPH_SETS = net.runelite.client.database.data.tables.TmorphSets.TMORPH_SETS;
+
/**
* The table PUBLIC.USER.
*/
@@ -67,9 +73,6 @@ public class Public extends SchemaImpl
}
- /**
- * {@inheritDoc}
- */
@Override
public Catalog getCatalog()
{
@@ -90,6 +93,7 @@ public class Public extends SchemaImpl
Loottrackerevents.LOOTTRACKEREVENTS,
Loottrackerlink.LOOTTRACKERLINK,
Loottrackerloot.LOOTTRACKERLOOT,
+ TmorphSets.TMORPH_SETS,
User.USER);
}
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/Tables.java b/runelite-client/src/main/java/net/runelite/client/database/data/Tables.java
index f55ce70631..0b8ca41d45 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/Tables.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/Tables.java
@@ -4,10 +4,11 @@
package net.runelite.client.database.data;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.tables.Loottrackerevents;
import net.runelite.client.database.data.tables.Loottrackerlink;
import net.runelite.client.database.data.tables.Loottrackerloot;
+import net.runelite.client.database.data.tables.TmorphSets;
import net.runelite.client.database.data.tables.User;
@@ -17,7 +18,7 @@ import net.runelite.client.database.data.tables.User;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -28,20 +29,25 @@ public class Tables
/**
* The table PUBLIC.LOOTTRACKEREVENTS.
*/
- public static final Loottrackerevents LOOTTRACKEREVENTS = net.runelite.client.database.data.tables.Loottrackerevents.LOOTTRACKEREVENTS;
+ public static final Loottrackerevents LOOTTRACKEREVENTS = Loottrackerevents.LOOTTRACKEREVENTS;
/**
* The table PUBLIC.LOOTTRACKERLINK.
*/
- public static final Loottrackerlink LOOTTRACKERLINK = net.runelite.client.database.data.tables.Loottrackerlink.LOOTTRACKERLINK;
+ public static final Loottrackerlink LOOTTRACKERLINK = Loottrackerlink.LOOTTRACKERLINK;
/**
* The table PUBLIC.LOOTTRACKERLOOT.
*/
- public static final Loottrackerloot LOOTTRACKERLOOT = net.runelite.client.database.data.tables.Loottrackerloot.LOOTTRACKERLOOT;
+ public static final Loottrackerloot LOOTTRACKERLOOT = Loottrackerloot.LOOTTRACKERLOOT;
+
+ /**
+ * The table PUBLIC.TMORPH_SETS.
+ */
+ public static final TmorphSets TMORPH_SETS = TmorphSets.TMORPH_SETS;
/**
* The table PUBLIC.USER.
*/
- public static final User USER = net.runelite.client.database.data.tables.User.USER;
+ public static final User USER = User.USER;
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerevents.java b/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerevents.java
index d139de8d1f..5bceae62d6 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerevents.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerevents.java
@@ -8,7 +8,7 @@ import java.sql.Timestamp;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.Indexes;
import net.runelite.client.database.data.Keys;
import net.runelite.client.database.data.Public;
@@ -18,6 +18,7 @@ import org.jooq.ForeignKey;
import org.jooq.Index;
import org.jooq.Name;
import org.jooq.Record;
+import org.jooq.Row4;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@@ -32,7 +33,7 @@ import org.jooq.impl.TableImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -40,7 +41,7 @@ import org.jooq.impl.TableImpl;
public class Loottrackerevents extends TableImpl
{
- private static final long serialVersionUID = -824670812;
+ private static final long serialVersionUID = 1578403652;
/**
* The reference instance of PUBLIC.LOOTTRACKEREVENTS
@@ -59,22 +60,22 @@ public class Loottrackerevents extends TableImpl
/**
* The column PUBLIC.LOOTTRACKEREVENTS.UNIQUEID.
*/
- public final TableField UNIQUEID = createField("UNIQUEID", org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
+ public final TableField UNIQUEID = createField(DSL.name("UNIQUEID"), org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKEREVENTS.EVENTID.
*/
- public final TableField EVENTID = createField("EVENTID", org.jooq.impl.SQLDataType.VARCHAR(255).nullable(false), this, "");
+ public final TableField EVENTID = createField(DSL.name("EVENTID"), org.jooq.impl.SQLDataType.VARCHAR(255).nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKEREVENTS.TYPE.
*/
- public final TableField TYPE = createField("TYPE", org.jooq.impl.SQLDataType.VARCHAR(255).nullable(false), this, "");
+ public final TableField TYPE = createField(DSL.name("TYPE"), org.jooq.impl.SQLDataType.VARCHAR(255).nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKEREVENTS.TIME.
*/
- public final TableField TIME = createField("TIME", org.jooq.impl.SQLDataType.TIMESTAMP.precision(6).nullable(false), this, "");
+ public final TableField TIME = createField(DSL.name("TIME"), org.jooq.impl.SQLDataType.TIMESTAMP.precision(6).nullable(false), this, "");
/**
* Create a PUBLIC.LOOTTRACKEREVENTS table reference
@@ -115,54 +116,36 @@ public class Loottrackerevents extends TableImpl
super(child, key, LOOTTRACKEREVENTS);
}
- /**
- * {@inheritDoc}
- */
@Override
public Schema getSchema()
{
return Public.PUBLIC;
}
- /**
- * {@inheritDoc}
- */
@Override
public List getIndexes()
{
return Arrays.asList(Indexes.PRIMARY_KEY_B);
}
- /**
- * {@inheritDoc}
- */
@Override
public UniqueKey getPrimaryKey()
{
- return Keys.PK_EVENTUNIQUEID;
+ return Keys.PK_LOOTTRACKEREVENTS;
}
- /**
- * {@inheritDoc}
- */
@Override
public List> getKeys()
{
- return Arrays.>asList(Keys.PK_EVENTUNIQUEID);
+ return Arrays.>asList(Keys.PK_LOOTTRACKEREVENTS);
}
- /**
- * {@inheritDoc}
- */
@Override
public Loottrackerevents as(String alias)
{
return new Loottrackerevents(DSL.name(alias), this);
}
- /**
- * {@inheritDoc}
- */
@Override
public Loottrackerevents as(Name alias)
{
@@ -186,4 +169,14 @@ public class Loottrackerevents extends TableImpl
{
return new Loottrackerevents(name, null);
}
+
+ // -------------------------------------------------------------------------
+ // Row4 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row4 fieldsRow()
+ {
+ return (Row4) super.fieldsRow();
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerlink.java b/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerlink.java
index c720d8e5f5..f800608007 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerlink.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerlink.java
@@ -7,7 +7,7 @@ package net.runelite.client.database.data.tables;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.Indexes;
import net.runelite.client.database.data.Keys;
import net.runelite.client.database.data.Public;
@@ -17,10 +17,10 @@ import org.jooq.ForeignKey;
import org.jooq.Index;
import org.jooq.Name;
import org.jooq.Record;
+import org.jooq.Row4;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
-import org.jooq.UniqueKey;
import org.jooq.impl.DSL;
import org.jooq.impl.TableImpl;
@@ -31,7 +31,7 @@ import org.jooq.impl.TableImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -39,7 +39,7 @@ import org.jooq.impl.TableImpl;
public class Loottrackerlink extends TableImpl
{
- private static final long serialVersionUID = 1145289106;
+ private static final long serialVersionUID = -1694278583;
/**
* The reference instance of PUBLIC.LOOTTRACKERLINK
@@ -58,22 +58,22 @@ public class Loottrackerlink extends TableImpl
/**
* The column PUBLIC.LOOTTRACKERLINK.LINKUNIQUEID.
*/
- public final TableField LINKUNIQUEID = createField("LINKUNIQUEID", org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
+ public final TableField LINKUNIQUEID = createField(DSL.name("LINKUNIQUEID"), org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKERLINK.EVENTUNIQUEID.
*/
- public final TableField EVENTUNIQUEID = createField("EVENTUNIQUEID", org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
+ public final TableField EVENTUNIQUEID = createField(DSL.name("EVENTUNIQUEID"), org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKERLINK.DROPUNIQUEID.
*/
- public final TableField DROPUNIQUEID = createField("DROPUNIQUEID", org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
+ public final TableField DROPUNIQUEID = createField(DSL.name("DROPUNIQUEID"), org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKERLINK.USERUNIQUEID.
*/
- public final TableField USERUNIQUEID = createField("USERUNIQUEID", org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
+ public final TableField USERUNIQUEID = createField(DSL.name("USERUNIQUEID"), org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
/**
* Create a PUBLIC.LOOTTRACKERLINK table reference
@@ -114,49 +114,22 @@ public class Loottrackerlink extends TableImpl
super(child, key, LOOTTRACKERLINK);
}
- /**
- * {@inheritDoc}
- */
@Override
public Schema getSchema()
{
return Public.PUBLIC;
}
- /**
- * {@inheritDoc}
- */
@Override
public List getIndexes()
{
- return Arrays.asList(Indexes.FK_LOOTTRACKEREVENT_INDEX_6, Indexes.FK_LOOTTRACKERLOOT_INDEX_6, Indexes.PRIMARY_KEY_6B);
+ return Arrays.asList(Indexes.FK_LOOTTRACKERDROP_INDEX_6, Indexes.FK_LOOTTRACKEREVENT_INDEX_6, Indexes.FK_USER_INDEX_6);
}
- /**
- * {@inheritDoc}
- */
- @Override
- public UniqueKey getPrimaryKey()
- {
- return Keys.PK_LOOTTRACKERLINK;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- public List> getKeys()
- {
- return Arrays.>asList(Keys.PK_LOOTTRACKERLINK);
- }
-
- /**
- * {@inheritDoc}
- */
@Override
public List> getReferences()
{
- return Arrays.>asList(Keys.FK_LOOTTRACKEREVENT, Keys.FK_LOOTTRACKERLOOT, Keys.FK_USER);
+ return Arrays.>asList(Keys.FK_LOOTTRACKEREVENT, Keys.FK_LOOTTRACKERDROP, Keys.FK_USER);
}
public Loottrackerevents loottrackerevents()
@@ -166,7 +139,7 @@ public class Loottrackerlink extends TableImpl
public Loottrackerloot loottrackerloot()
{
- return new Loottrackerloot(this, Keys.FK_LOOTTRACKERLOOT);
+ return new Loottrackerloot(this, Keys.FK_LOOTTRACKERDROP);
}
public User user()
@@ -174,18 +147,12 @@ public class Loottrackerlink extends TableImpl
return new User(this, Keys.FK_USER);
}
- /**
- * {@inheritDoc}
- */
@Override
public Loottrackerlink as(String alias)
{
return new Loottrackerlink(DSL.name(alias), this);
}
- /**
- * {@inheritDoc}
- */
@Override
public Loottrackerlink as(Name alias)
{
@@ -209,4 +176,14 @@ public class Loottrackerlink extends TableImpl
{
return new Loottrackerlink(name, null);
}
+
+ // -------------------------------------------------------------------------
+ // Row4 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row4 fieldsRow()
+ {
+ return (Row4) super.fieldsRow();
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerloot.java b/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerloot.java
index 6ea79852d8..a9d6b574a3 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerloot.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/tables/Loottrackerloot.java
@@ -7,7 +7,7 @@ package net.runelite.client.database.data.tables;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.Indexes;
import net.runelite.client.database.data.Keys;
import net.runelite.client.database.data.Public;
@@ -17,6 +17,7 @@ import org.jooq.ForeignKey;
import org.jooq.Index;
import org.jooq.Name;
import org.jooq.Record;
+import org.jooq.Row3;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@@ -31,7 +32,7 @@ import org.jooq.impl.TableImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -39,7 +40,7 @@ import org.jooq.impl.TableImpl;
public class Loottrackerloot extends TableImpl
{
- private static final long serialVersionUID = 1952959378;
+ private static final long serialVersionUID = 1461948279;
/**
* The reference instance of PUBLIC.LOOTTRACKERLOOT
@@ -58,17 +59,17 @@ public class Loottrackerloot extends TableImpl
/**
* The column PUBLIC.LOOTTRACKERLOOT.UNIQUEID.
*/
- public final TableField UNIQUEID = createField("UNIQUEID", org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
+ public final TableField UNIQUEID = createField(DSL.name("UNIQUEID"), org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKERLOOT.ITEMID.
*/
- public final TableField ITEMID = createField("ITEMID", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+ public final TableField ITEMID = createField(DSL.name("ITEMID"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
/**
* The column PUBLIC.LOOTTRACKERLOOT.QUANTITY.
*/
- public final TableField QUANTITY = createField("QUANTITY", org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+ public final TableField QUANTITY = createField(DSL.name("QUANTITY"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
/**
* Create a PUBLIC.LOOTTRACKERLOOT table reference
@@ -109,54 +110,36 @@ public class Loottrackerloot extends TableImpl
super(child, key, LOOTTRACKERLOOT);
}
- /**
- * {@inheritDoc}
- */
@Override
public Schema getSchema()
{
return Public.PUBLIC;
}
- /**
- * {@inheritDoc}
- */
@Override
public List getIndexes()
{
return Arrays.asList(Indexes.PRIMARY_KEY_6);
}
- /**
- * {@inheritDoc}
- */
@Override
public UniqueKey getPrimaryKey()
{
- return Keys.PK_LOOTUNIQUEID;
+ return Keys.PK_LOOTTRACKERDROPS;
}
- /**
- * {@inheritDoc}
- */
@Override
public List> getKeys()
{
- return Arrays.>asList(Keys.PK_LOOTUNIQUEID);
+ return Arrays.>asList(Keys.PK_LOOTTRACKERDROPS);
}
- /**
- * {@inheritDoc}
- */
@Override
public Loottrackerloot as(String alias)
{
return new Loottrackerloot(DSL.name(alias), this);
}
- /**
- * {@inheritDoc}
- */
@Override
public Loottrackerloot as(Name alias)
{
@@ -180,4 +163,14 @@ public class Loottrackerloot extends TableImpl
{
return new Loottrackerloot(name, null);
}
+
+ // -------------------------------------------------------------------------
+ // Row3 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row3 fieldsRow()
+ {
+ return (Row3) super.fieldsRow();
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/tables/TmorphSets.java b/runelite-client/src/main/java/net/runelite/client/database/data/tables/TmorphSets.java
new file mode 100644
index 0000000000..fcc76b8504
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/tables/TmorphSets.java
@@ -0,0 +1,196 @@
+/*
+ * This file is generated by jOOQ.
+ */
+package net.runelite.client.database.data.tables;
+
+
+import java.util.Arrays;
+import java.util.List;
+import javax.annotation.processing.Generated;
+import net.runelite.client.database.data.Indexes;
+import net.runelite.client.database.data.Public;
+import net.runelite.client.database.data.tables.records.TmorphSetsRecord;
+import org.jooq.Field;
+import org.jooq.ForeignKey;
+import org.jooq.Index;
+import org.jooq.Name;
+import org.jooq.Record;
+import org.jooq.Row10;
+import org.jooq.Schema;
+import org.jooq.Table;
+import org.jooq.TableField;
+import org.jooq.impl.DSL;
+import org.jooq.impl.TableImpl;
+
+
+/**
+ * This class is generated by jOOQ.
+ */
+@Generated(
+ value = {
+ "http://www.jooq.org",
+ "jOOQ version:3.12.3"
+ },
+ comments = "This class is generated by jOOQ"
+)
+@SuppressWarnings({"all", "unchecked", "rawtypes"})
+public class TmorphSets extends TableImpl
+{
+
+ private static final long serialVersionUID = -2027086786;
+
+ /**
+ * The reference instance of PUBLIC.TMORPH_SETS
+ */
+ public static final TmorphSets TMORPH_SETS = new TmorphSets();
+
+ /**
+ * The class holding records for this type
+ */
+ @Override
+ public Class getRecordType()
+ {
+ return TmorphSetsRecord.class;
+ }
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.SET_NAME.
+ */
+ public final TableField SET_NAME = createField(DSL.name("SET_NAME"), org.jooq.impl.SQLDataType.VARCHAR(255).nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.HELMET.
+ */
+ public final TableField HELMET = createField(DSL.name("HELMET"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.CAPE.
+ */
+ public final TableField CAPE = createField(DSL.name("CAPE"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.AMULET.
+ */
+ public final TableField AMULET = createField(DSL.name("AMULET"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.WEAPON.
+ */
+ public final TableField WEAPON = createField(DSL.name("WEAPON"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.TORSO.
+ */
+ public final TableField TORSO = createField(DSL.name("TORSO"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.SHIELD.
+ */
+ public final TableField SHIELD = createField(DSL.name("SHIELD"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.LEGS.
+ */
+ public final TableField LEGS = createField(DSL.name("LEGS"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.HANDS.
+ */
+ public final TableField HANDS = createField(DSL.name("HANDS"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * The column PUBLIC.TMORPH_SETS.BOOTS.
+ */
+ public final TableField BOOTS = createField(DSL.name("BOOTS"), org.jooq.impl.SQLDataType.INTEGER.nullable(false), this, "");
+
+ /**
+ * Create a PUBLIC.TMORPH_SETS table reference
+ */
+ public TmorphSets()
+ {
+ this(DSL.name("TMORPH_SETS"), null);
+ }
+
+ /**
+ * Create an aliased PUBLIC.TMORPH_SETS table reference
+ */
+ public TmorphSets(String alias)
+ {
+ this(DSL.name(alias), TMORPH_SETS);
+ }
+
+ /**
+ * Create an aliased PUBLIC.TMORPH_SETS table reference
+ */
+ public TmorphSets(Name alias)
+ {
+ this(alias, TMORPH_SETS);
+ }
+
+ private TmorphSets(Name alias, Table aliased)
+ {
+ this(alias, aliased, null);
+ }
+
+ private TmorphSets(Name alias, Table aliased, Field>[] parameters)
+ {
+ super(alias, null, aliased, parameters, DSL.comment(""));
+ }
+
+ public TmorphSets(Table child, ForeignKey key)
+ {
+ super(child, key, TMORPH_SETS);
+ }
+
+ @Override
+ public Schema getSchema()
+ {
+ return Public.PUBLIC;
+ }
+
+ @Override
+ public List getIndexes()
+ {
+ return Arrays.asList(Indexes.TMORPH_SETS_SET_NAME_UINDEX);
+ }
+
+ @Override
+ public TmorphSets as(String alias)
+ {
+ return new TmorphSets(DSL.name(alias), this);
+ }
+
+ @Override
+ public TmorphSets as(Name alias)
+ {
+ return new TmorphSets(alias, this);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public TmorphSets rename(String name)
+ {
+ return new TmorphSets(DSL.name(name), null);
+ }
+
+ /**
+ * Rename this table
+ */
+ @Override
+ public TmorphSets rename(Name name)
+ {
+ return new TmorphSets(name, null);
+ }
+
+ // -------------------------------------------------------------------------
+ // Row10 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row10 fieldsRow()
+ {
+ return (Row10) super.fieldsRow();
+ }
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/tables/User.java b/runelite-client/src/main/java/net/runelite/client/database/data/tables/User.java
index b9295a486d..15588c223d 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/tables/User.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/tables/User.java
@@ -7,7 +7,7 @@ package net.runelite.client.database.data.tables;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.Indexes;
import net.runelite.client.database.data.Keys;
import net.runelite.client.database.data.Public;
@@ -17,6 +17,7 @@ import org.jooq.ForeignKey;
import org.jooq.Index;
import org.jooq.Name;
import org.jooq.Record;
+import org.jooq.Row2;
import org.jooq.Schema;
import org.jooq.Table;
import org.jooq.TableField;
@@ -31,7 +32,7 @@ import org.jooq.impl.TableImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -39,7 +40,7 @@ import org.jooq.impl.TableImpl;
public class User extends TableImpl
{
- private static final long serialVersionUID = 270848699;
+ private static final long serialVersionUID = -668009102;
/**
* The reference instance of PUBLIC.USER
@@ -58,12 +59,12 @@ public class User extends TableImpl
/**
* The column PUBLIC.USER.UNIQUEID.
*/
- public final TableField UNIQUEID = createField("UNIQUEID", org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
+ public final TableField UNIQUEID = createField(DSL.name("UNIQUEID"), org.jooq.impl.SQLDataType.UUID.nullable(false), this, "");
/**
* The column PUBLIC.USER.USERNAME.
*/
- public final TableField USERNAME = createField("USERNAME", org.jooq.impl.SQLDataType.VARCHAR(12).nullable(false), this, "");
+ public final TableField USERNAME = createField(DSL.name("USERNAME"), org.jooq.impl.SQLDataType.VARCHAR(12).nullable(false), this, "");
/**
* Create a PUBLIC.USER table reference
@@ -104,54 +105,36 @@ public class User extends TableImpl
super(child, key, USER);
}
- /**
- * {@inheritDoc}
- */
@Override
public Schema getSchema()
{
return Public.PUBLIC;
}
- /**
- * {@inheritDoc}
- */
@Override
public List getIndexes()
{
- return Arrays.asList(Indexes.PRIMARY_KEY_2);
+ return Arrays.asList(Indexes.PRIMARY_KEY_2, Indexes.UN_USERNAME_INDEX_2);
}
- /**
- * {@inheritDoc}
- */
@Override
public UniqueKey getPrimaryKey()
{
return Keys.PK_USER;
}
- /**
- * {@inheritDoc}
- */
@Override
public List> getKeys()
{
- return Arrays.>asList(Keys.PK_USER);
+ return Arrays.>asList(Keys.PK_USER, Keys.UN_USERNAME);
}
- /**
- * {@inheritDoc}
- */
@Override
public User as(String alias)
{
return new User(DSL.name(alias), this);
}
- /**
- * {@inheritDoc}
- */
@Override
public User as(Name alias)
{
@@ -175,4 +158,14 @@ public class User extends TableImpl
{
return new User(name, null);
}
+
+ // -------------------------------------------------------------------------
+ // Row2 type methods
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row2 fieldsRow()
+ {
+ return (Row2) super.fieldsRow();
+ }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/LoottrackereventsRecord.java b/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/LoottrackereventsRecord.java
index 9bd71f4468..00f0095252 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/LoottrackereventsRecord.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/LoottrackereventsRecord.java
@@ -6,7 +6,7 @@ package net.runelite.client.database.data.tables.records;
import java.sql.Timestamp;
import java.util.UUID;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.tables.Loottrackerevents;
import org.jooq.Field;
import org.jooq.Record1;
@@ -21,7 +21,7 @@ import org.jooq.impl.UpdatableRecordImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -29,7 +29,7 @@ import org.jooq.impl.UpdatableRecordImpl;
public class LoottrackereventsRecord extends UpdatableRecordImpl implements Record4
{
- private static final long serialVersionUID = -1505143967;
+ private static final long serialVersionUID = -1418522415;
/**
* Setter for PUBLIC.LOOTTRACKEREVENTS.UNIQUEID.
@@ -99,9 +99,6 @@ public class LoottrackereventsRecord extends UpdatableRecordImpl key()
{
@@ -112,135 +109,90 @@ public class LoottrackereventsRecord extends UpdatableRecordImpl fieldsRow()
{
return (Row4) super.fieldsRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Row4 valuesRow()
{
return (Row4) super.valuesRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field1()
{
return Loottrackerevents.LOOTTRACKEREVENTS.UNIQUEID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field2()
{
return Loottrackerevents.LOOTTRACKEREVENTS.EVENTID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field3()
{
return Loottrackerevents.LOOTTRACKEREVENTS.TYPE;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field4()
{
return Loottrackerevents.LOOTTRACKEREVENTS.TIME;
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID component1()
{
return getUniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public String component2()
{
return getEventid();
}
- /**
- * {@inheritDoc}
- */
@Override
public String component3()
{
return getType();
}
- /**
- * {@inheritDoc}
- */
@Override
public Timestamp component4()
{
return getTime();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID value1()
{
return getUniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public String value2()
{
return getEventid();
}
- /**
- * {@inheritDoc}
- */
@Override
public String value3()
{
return getType();
}
- /**
- * {@inheritDoc}
- */
@Override
public Timestamp value4()
{
return getTime();
}
- /**
- * {@inheritDoc}
- */
@Override
public LoottrackereventsRecord value1(UUID value)
{
@@ -248,9 +200,6 @@ public class LoottrackereventsRecord extends UpdatableRecordImpl implements Record4
+public class LoottrackerlinkRecord extends TableRecordImpl implements Record4
{
- private static final long serialVersionUID = 1985117517;
+ private static final long serialVersionUID = -1701074584;
/**
* Setter for PUBLIC.LOOTTRACKERLINK.LINKUNIQUEID.
@@ -94,152 +93,94 @@ public class LoottrackerlinkRecord extends UpdatableRecordImpl key()
- {
- return (Record1) super.key();
- }
-
// -------------------------------------------------------------------------
// Record4 type implementation
// -------------------------------------------------------------------------
- /**
- * {@inheritDoc}
- */
@Override
public Row4 fieldsRow()
{
return (Row4) super.fieldsRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Row4 valuesRow()
{
return (Row4) super.valuesRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field1()
{
return Loottrackerlink.LOOTTRACKERLINK.LINKUNIQUEID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field2()
{
return Loottrackerlink.LOOTTRACKERLINK.EVENTUNIQUEID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field3()
{
return Loottrackerlink.LOOTTRACKERLINK.DROPUNIQUEID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field4()
{
return Loottrackerlink.LOOTTRACKERLINK.USERUNIQUEID;
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID component1()
{
return getLinkuniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID component2()
{
return getEventuniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID component3()
{
return getDropuniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID component4()
{
return getUseruniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID value1()
{
return getLinkuniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID value2()
{
return getEventuniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID value3()
{
return getDropuniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID value4()
{
return getUseruniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public LoottrackerlinkRecord value1(UUID value)
{
@@ -247,9 +188,6 @@ public class LoottrackerlinkRecord extends UpdatableRecordImpl implements Record3
{
- private static final long serialVersionUID = -1894768090;
+ private static final long serialVersionUID = 693470968;
/**
* Setter for PUBLIC.LOOTTRACKERLOOT.UNIQUEID.
@@ -82,9 +82,6 @@ public class LoottrackerlootRecord extends UpdatableRecordImpl key()
{
@@ -95,108 +92,72 @@ public class LoottrackerlootRecord extends UpdatableRecordImpl fieldsRow()
{
return (Row3) super.fieldsRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Row3 valuesRow()
{
return (Row3) super.valuesRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field1()
{
return Loottrackerloot.LOOTTRACKERLOOT.UNIQUEID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field2()
{
return Loottrackerloot.LOOTTRACKERLOOT.ITEMID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field3()
{
return Loottrackerloot.LOOTTRACKERLOOT.QUANTITY;
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID component1()
{
return getUniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public Integer component2()
{
return getItemid();
}
- /**
- * {@inheritDoc}
- */
@Override
public Integer component3()
{
return getQuantity();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID value1()
{
return getUniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public Integer value2()
{
return getItemid();
}
- /**
- * {@inheritDoc}
- */
@Override
public Integer value3()
{
return getQuantity();
}
- /**
- * {@inheritDoc}
- */
@Override
public LoottrackerlootRecord value1(UUID value)
{
@@ -204,9 +165,6 @@ public class LoottrackerlootRecord extends UpdatableRecordImpl implements Record10
+{
+
+ private static final long serialVersionUID = 546214401;
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.SET_NAME.
+ */
+ public void setSetName(String value)
+ {
+ set(0, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.SET_NAME.
+ */
+ public String getSetName()
+ {
+ return (String) get(0);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.HELMET.
+ */
+ public void setHelmet(Integer value)
+ {
+ set(1, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.HELMET.
+ */
+ public Integer getHelmet()
+ {
+ return (Integer) get(1);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.CAPE.
+ */
+ public void setCape(Integer value)
+ {
+ set(2, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.CAPE.
+ */
+ public Integer getCape()
+ {
+ return (Integer) get(2);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.AMULET.
+ */
+ public void setAmulet(Integer value)
+ {
+ set(3, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.AMULET.
+ */
+ public Integer getAmulet()
+ {
+ return (Integer) get(3);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.WEAPON.
+ */
+ public void setWeapon(Integer value)
+ {
+ set(4, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.WEAPON.
+ */
+ public Integer getWeapon()
+ {
+ return (Integer) get(4);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.TORSO.
+ */
+ public void setTorso(Integer value)
+ {
+ set(5, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.TORSO.
+ */
+ public Integer getTorso()
+ {
+ return (Integer) get(5);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.SHIELD.
+ */
+ public void setShield(Integer value)
+ {
+ set(6, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.SHIELD.
+ */
+ public Integer getShield()
+ {
+ return (Integer) get(6);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.LEGS.
+ */
+ public void setLegs(Integer value)
+ {
+ set(7, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.LEGS.
+ */
+ public Integer getLegs()
+ {
+ return (Integer) get(7);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.HANDS.
+ */
+ public void setHands(Integer value)
+ {
+ set(8, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.HANDS.
+ */
+ public Integer getHands()
+ {
+ return (Integer) get(8);
+ }
+
+ /**
+ * Setter for PUBLIC.TMORPH_SETS.BOOTS.
+ */
+ public void setBoots(Integer value)
+ {
+ set(9, value);
+ }
+
+ /**
+ * Getter for PUBLIC.TMORPH_SETS.BOOTS.
+ */
+ public Integer getBoots()
+ {
+ return (Integer) get(9);
+ }
+
+ // -------------------------------------------------------------------------
+ // Record10 type implementation
+ // -------------------------------------------------------------------------
+
+ @Override
+ public Row10 fieldsRow()
+ {
+ return (Row10) super.fieldsRow();
+ }
+
+ @Override
+ public Row10 valuesRow()
+ {
+ return (Row10) super.valuesRow();
+ }
+
+ @Override
+ public Field field1()
+ {
+ return TmorphSets.TMORPH_SETS.SET_NAME;
+ }
+
+ @Override
+ public Field field2()
+ {
+ return TmorphSets.TMORPH_SETS.HELMET;
+ }
+
+ @Override
+ public Field field3()
+ {
+ return TmorphSets.TMORPH_SETS.CAPE;
+ }
+
+ @Override
+ public Field field4()
+ {
+ return TmorphSets.TMORPH_SETS.AMULET;
+ }
+
+ @Override
+ public Field field5()
+ {
+ return TmorphSets.TMORPH_SETS.WEAPON;
+ }
+
+ @Override
+ public Field field6()
+ {
+ return TmorphSets.TMORPH_SETS.TORSO;
+ }
+
+ @Override
+ public Field field7()
+ {
+ return TmorphSets.TMORPH_SETS.SHIELD;
+ }
+
+ @Override
+ public Field field8()
+ {
+ return TmorphSets.TMORPH_SETS.LEGS;
+ }
+
+ @Override
+ public Field field9()
+ {
+ return TmorphSets.TMORPH_SETS.HANDS;
+ }
+
+ @Override
+ public Field field10()
+ {
+ return TmorphSets.TMORPH_SETS.BOOTS;
+ }
+
+ @Override
+ public String component1()
+ {
+ return getSetName();
+ }
+
+ @Override
+ public Integer component2()
+ {
+ return getHelmet();
+ }
+
+ @Override
+ public Integer component3()
+ {
+ return getCape();
+ }
+
+ @Override
+ public Integer component4()
+ {
+ return getAmulet();
+ }
+
+ @Override
+ public Integer component5()
+ {
+ return getWeapon();
+ }
+
+ @Override
+ public Integer component6()
+ {
+ return getTorso();
+ }
+
+ @Override
+ public Integer component7()
+ {
+ return getShield();
+ }
+
+ @Override
+ public Integer component8()
+ {
+ return getLegs();
+ }
+
+ @Override
+ public Integer component9()
+ {
+ return getHands();
+ }
+
+ @Override
+ public Integer component10()
+ {
+ return getBoots();
+ }
+
+ @Override
+ public String value1()
+ {
+ return getSetName();
+ }
+
+ @Override
+ public Integer value2()
+ {
+ return getHelmet();
+ }
+
+ @Override
+ public Integer value3()
+ {
+ return getCape();
+ }
+
+ @Override
+ public Integer value4()
+ {
+ return getAmulet();
+ }
+
+ @Override
+ public Integer value5()
+ {
+ return getWeapon();
+ }
+
+ @Override
+ public Integer value6()
+ {
+ return getTorso();
+ }
+
+ @Override
+ public Integer value7()
+ {
+ return getShield();
+ }
+
+ @Override
+ public Integer value8()
+ {
+ return getLegs();
+ }
+
+ @Override
+ public Integer value9()
+ {
+ return getHands();
+ }
+
+ @Override
+ public Integer value10()
+ {
+ return getBoots();
+ }
+
+ @Override
+ public TmorphSetsRecord value1(String value)
+ {
+ setSetName(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value2(Integer value)
+ {
+ setHelmet(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value3(Integer value)
+ {
+ setCape(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value4(Integer value)
+ {
+ setAmulet(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value5(Integer value)
+ {
+ setWeapon(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value6(Integer value)
+ {
+ setTorso(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value7(Integer value)
+ {
+ setShield(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value8(Integer value)
+ {
+ setLegs(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value9(Integer value)
+ {
+ setHands(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord value10(Integer value)
+ {
+ setBoots(value);
+ return this;
+ }
+
+ @Override
+ public TmorphSetsRecord values(String value1, Integer value2, Integer value3, Integer value4, Integer value5, Integer value6, Integer value7, Integer value8, Integer value9, Integer value10)
+ {
+ value1(value1);
+ value2(value2);
+ value3(value3);
+ value4(value4);
+ value5(value5);
+ value6(value6);
+ value7(value7);
+ value8(value8);
+ value9(value9);
+ value10(value10);
+ return this;
+ }
+
+ // -------------------------------------------------------------------------
+ // Constructors
+ // -------------------------------------------------------------------------
+
+ /**
+ * Create a detached TmorphSetsRecord
+ */
+ public TmorphSetsRecord()
+ {
+ super(TmorphSets.TMORPH_SETS);
+ }
+
+ /**
+ * Create a detached, initialised TmorphSetsRecord
+ */
+ public TmorphSetsRecord(String setName, Integer helmet, Integer cape, Integer amulet, Integer weapon, Integer torso, Integer shield, Integer legs, Integer hands, Integer boots)
+ {
+ super(TmorphSets.TMORPH_SETS);
+
+ set(0, setName);
+ set(1, helmet);
+ set(2, cape);
+ set(3, amulet);
+ set(4, weapon);
+ set(5, torso);
+ set(6, shield);
+ set(7, legs);
+ set(8, hands);
+ set(9, boots);
+ }
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/UserRecord.java b/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/UserRecord.java
index b57e450a8e..2aeec56d34 100644
--- a/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/UserRecord.java
+++ b/runelite-client/src/main/java/net/runelite/client/database/data/tables/records/UserRecord.java
@@ -5,7 +5,7 @@ package net.runelite.client.database.data.tables.records;
import java.util.UUID;
-import javax.annotation.Generated;
+import javax.annotation.processing.Generated;
import net.runelite.client.database.data.tables.User;
import org.jooq.Field;
import org.jooq.Record1;
@@ -20,7 +20,7 @@ import org.jooq.impl.UpdatableRecordImpl;
@Generated(
value = {
"http://www.jooq.org",
- "jOOQ version:3.11.12"
+ "jOOQ version:3.12.3"
},
comments = "This class is generated by jOOQ"
)
@@ -28,7 +28,7 @@ import org.jooq.impl.UpdatableRecordImpl;
public class UserRecord extends UpdatableRecordImpl implements Record2
{
- private static final long serialVersionUID = 628808107;
+ private static final long serialVersionUID = 2077804101;
/**
* Setter for PUBLIC.USER.UNIQUEID.
@@ -66,9 +66,6 @@ public class UserRecord extends UpdatableRecordImpl implements Recor
// Primary key information
// -------------------------------------------------------------------------
- /**
- * {@inheritDoc}
- */
@Override
public Record1 key()
{
@@ -79,81 +76,54 @@ public class UserRecord extends UpdatableRecordImpl implements Recor
// Record2 type implementation
// -------------------------------------------------------------------------
- /**
- * {@inheritDoc}
- */
@Override
public Row2 fieldsRow()
{
return (Row2) super.fieldsRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Row2 valuesRow()
{
return (Row2) super.valuesRow();
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field1()
{
return User.USER.UNIQUEID;
}
- /**
- * {@inheritDoc}
- */
@Override
public Field field2()
{
return User.USER.USERNAME;
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID component1()
{
return getUniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public String component2()
{
return getUsername();
}
- /**
- * {@inheritDoc}
- */
@Override
public UUID value1()
{
return getUniqueid();
}
- /**
- * {@inheritDoc}
- */
@Override
public String value2()
{
return getUsername();
}
- /**
- * {@inheritDoc}
- */
@Override
public UserRecord value1(UUID value)
{
@@ -161,9 +131,6 @@ public class UserRecord extends UpdatableRecordImpl implements Recor
return this;
}
- /**
- * {@inheritDoc}
- */
@Override
public UserRecord value2(String value)
{
@@ -171,9 +138,6 @@ public class UserRecord extends UpdatableRecordImpl implements Recor
return this;
}
- /**
- * {@inheritDoc}
- */
@Override
public UserRecord values(UUID value1, String value2)
{
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/Parse.java b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/Parse.java
deleted file mode 100644
index fa4ba34ec8..0000000000
--- a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/Parse.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package net.runelite.client.plugins.tmorph;
-
-import java.util.Arrays;
-import java.util.Map;
-import javax.inject.Singleton;
-
-@Singleton
-public class Parse
-{
- public static boolean parse(String value)
- {
- try
- {
- final StringBuilder sb = new StringBuilder();
-
- for (String str : value.split("\n"))
- {
- if (!str.startsWith("//"))
- {
- sb.append(str).append("\n");
- }
- }
- final Map tmp = TMorph.getNEWLINE_SPLITTER().withKeyValueSeparator(':').split(sb);
-
- for (Map.Entry entry : tmp.entrySet())
- {
- if (!TMorph.getKit().containsKey(entry.getValue()))
- {
- return false;
- }
-
- final int[] ints = Arrays.stream(entry.getKey().split(",")).map(String::trim).mapToInt(Integer::parseInt).toArray();
-
- if (ints.length <= 1)
- {
- return false;
- }
- }
-
- return true;
- }
- catch (Exception ex)
- {
- return false;
- }
- }
-}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorph.java b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorph.java
index 6398a84b30..165eb39f10 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorph.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorph.java
@@ -26,33 +26,38 @@ package net.runelite.client.plugins.tmorph;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableMap;
import com.google.inject.Provides;
-import java.awt.Color;
+import java.awt.image.BufferedImage;
import java.util.Arrays;
+import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
import javax.inject.Singleton;
import lombok.AccessLevel;
import lombok.Getter;
+import lombok.Setter;
import net.runelite.api.Actor;
-import net.runelite.api.ChatMessageType;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Player;
import net.runelite.api.events.AnimationChanged;
-import net.runelite.api.events.CommandExecuted;
+import net.runelite.api.events.GameStateChanged;
import net.runelite.api.events.GameTick;
import net.runelite.api.events.SpotAnimationChanged;
import net.runelite.api.kit.KitType;
import net.runelite.api.widgets.WidgetInfo;
+import net.runelite.client.callback.ClientThread;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.eventbus.Subscribe;
import net.runelite.client.events.ConfigChanged;
+import net.runelite.client.game.ItemManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.plugins.PluginType;
-import net.runelite.client.util.Clipboard;
-import net.runelite.client.util.ColorUtil;
+import net.runelite.client.plugins.tmorph.ui.TPanel;
+import net.runelite.client.ui.ClientToolbar;
+import net.runelite.client.ui.NavigationButton;
+import net.runelite.client.util.ImageUtil;
import org.apache.commons.lang3.ObjectUtils;
@PluginDescriptor(
@@ -67,7 +72,6 @@ public class TMorph extends Plugin
{
@Getter(AccessLevel.PACKAGE)
private static final Map kit;
- private static final Color COLOR = new Color(10, 134, 74, 255);
static
{
@@ -79,7 +83,7 @@ public class TMorph extends Plugin
kit = builder.build();
}
- @Getter(AccessLevel.PACKAGE)
+ @Getter(AccessLevel.PUBLIC)
private static final Splitter NEWLINE_SPLITTER = Splitter
.on("\n")
.omitEmptyStrings()
@@ -94,15 +98,26 @@ public class TMorph extends Plugin
@Inject
private EventBus eventBus;
- private Map set1;
- private Map set2;
- private Map set3;
+ @Inject
+ private ClientToolbar clientToolbar;
+
+ @Inject
+ private ClientThread clientThread;
+
+ @Inject
+ private ItemManager itemManager;
+
+
+ private TPanel panel;
+ private NavigationButton navButton;
private int animation;
private int globalAnimSwap;
private int globalGraphicSwap;
private int graphic;
private int targetAnimation;
private int targetGraphic;
+ @Setter
+ private Map panelMorph = new HashMap<>();
@Provides
TMorphConfig provideConfig(ConfigManager configManager)
@@ -113,8 +128,20 @@ public class TMorph extends Plugin
@Override
protected void startUp()
{
+ final BufferedImage icon = ImageUtil.getResourceStreamFromClass(getClass(), "nav.png");
+
+ panel = injector.getInstance(TPanel.class);
+
+ navButton = NavigationButton.builder()
+ .tooltip("TMorph")
+ .icon(icon)
+ .priority(100)
+ .panel(panel)
+ .build();
+
+ clientToolbar.addNavigation(navButton);
+
updateConfig();
- addSubscriptions();
}
@Override
@@ -123,72 +150,17 @@ public class TMorph extends Plugin
eventBus.unregister(this);
}
- private void addSubscriptions()
+ @Subscribe
+ public void onGameStateChanged(GameStateChanged event)
{
- eventBus.subscribe(AnimationChanged.class, this, this::onAnimationChanged);
- eventBus.subscribe(GameTick.class, this, this::onGameTick);
- eventBus.subscribe(SpotAnimationChanged.class, this, this::onSpotAnimationChanged);
- eventBus.subscribe(CommandExecuted.class, this, this::onCommandExecuted);
- }
-
- private void onCommandExecuted(CommandExecuted event)
- {
- final String[] args = event.getArguments();
-
- if (event.getCommand().equals("tmorph"))
+ if (event.getGameState() == GameState.LOGIN_SCREEN)
{
- try
- {
- if (args[0].equals("copy"))
- {
- final StringBuilder sb = new StringBuilder();
- final Player player = client.getLocalPlayer();
-
- if (player == null
- || player.getPlayerAppearance() == null
- || client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null
- || client.getViewportWidget() == null)
- {
- return;
- }
-
- for (KitType kitType : KitType.values())
- {
- if (kitType.equals(KitType.RING) || kitType.equals(KitType.AMMUNITION))
- {
- continue;
- }
-
- final int id = player.getPlayerAppearance().getEquipmentId(kitType);
-
- if (id == -1)
- {
- continue;
- }
-
- sb.append(id);
- sb.append(",-1");
- sb.append(":");
- sb.append(kitType.getName());
- sb.append("\n");
- }
- client.addChatMessage(ChatMessageType.GAMEMESSAGE, "TMorph", ColorUtil.prependColorTag("Your current gear has been copied to your clipboard", COLOR), null);
- Clipboard.store(sb.toString());
- }
- else
- {
- client.addChatMessage(ChatMessageType.GAMEMESSAGE, "TMorph", ColorUtil.prependColorTag("Invalid syntax, do ::tmorph copy", Color.RED), null);
- }
- }
- catch (Exception e)
- {
- client.addChatMessage(ChatMessageType.GAMEMESSAGE, "TMorph", ColorUtil.prependColorTag("Invalid syntax, do ::tmorph copy", Color.RED), null);
- }
+ clientThread.invokeLater(() -> panel.populateSlots());
}
}
@Subscribe
- private void onConfigChanged(ConfigChanged event)
+ public void onConfigChanged(ConfigChanged event)
{
if (event.getGroup().equals("TMorph"))
{
@@ -196,7 +168,8 @@ public class TMorph extends Plugin
}
}
- private void onSpotAnimationChanged(SpotAnimationChanged event)
+ @Subscribe
+ public void onSpotAnimationChanged(SpotAnimationChanged event)
{
final Actor actor = event.getActor();
@@ -218,7 +191,8 @@ public class TMorph extends Plugin
}
}
- private void onAnimationChanged(AnimationChanged event)
+ @Subscribe
+ public void onAnimationChanged(AnimationChanged event)
{
final Actor actor = event.getActor();
@@ -240,7 +214,8 @@ public class TMorph extends Plugin
}
}
- private void onGameTick(GameTick event)
+ @Subscribe
+ public void onGameTick(GameTick event)
{
if (client.getGameState() != GameState.LOGGED_IN)
{
@@ -257,12 +232,10 @@ public class TMorph extends Plugin
return;
}
- updateGear(set1, player);
- updateGear(set2, player);
- updateGear(set3, player);
+ updateGear(panelMorph, player);
}
- private void updateGear(Map map, Player player)
+ public void updateGear(Map map, Player player)
{
if (map == null || map.isEmpty())
{
@@ -308,9 +281,6 @@ public class TMorph extends Plugin
private void updateConfig()
{
- this.set1 = NEWLINE_SPLITTER.withKeyValueSeparator(':').split(config.set1());
- this.set2 = NEWLINE_SPLITTER.withKeyValueSeparator(':').split(config.set2());
- this.set3 = NEWLINE_SPLITTER.withKeyValueSeparator(':').split(config.set3());
this.animation = config.animationSwap();
this.globalAnimSwap = config.globalAnimSwap();
this.globalGraphicSwap = config.globalGraphicSwap();
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorphConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorphConfig.java
index 404fadf453..c7b9c63e52 100644
--- a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorphConfig.java
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TMorphConfig.java
@@ -27,76 +27,10 @@ import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
import net.runelite.client.config.ConfigSection;
-import net.runelite.client.config.ConfigTitleSection;
-import net.runelite.client.config.Title;
@ConfigGroup("TMorph")
public interface TMorphConfig extends Config
{
- @ConfigTitleSection(
- keyName = "swaps",
- name = "Morphers",
- description = "",
- position = 1
- )
- default Title swaps()
- {
- return new Title();
- }
-
- @ConfigItem(
- keyName = "mageSwap",
- name = "Swap Set 1",
- description = "Proper Format is id,id:Slot" +
- "
For example: 6570,21295:Cape" +
- "
Valid Slots: Helmet, Cape, Amulet, Weapon, Torso, Shield, Legs, Head, Hands, Boots, Jaw, Ring, Ammo",
- titleSection = "swaps",
- position = 1,
- parse = true,
- clazz = Parse.class,
- method = "parse"
- )
- default String set1()
- {
- return "";
- }
-
- @ConfigItem(
- keyName = "rangeSwap",
- name = "Swap Set 2",
- description = "Proper Format is id,id:Slot" +
- "
For example: 6570,21295:Cape" +
- "
Valid Slots: Helmet, Cape, Amulet, Weapon, Torso, Shield, Legs, Head, Hands, Boots, Jaw, Ring, Ammo",
- titleSection = "swaps",
- position = 2,
- parse = true,
- clazz = Parse.class,
- method = "parse"
- )
- default String set2()
- {
- return "";
- }
-
- @ConfigItem(
- keyName = "meleeSwap",
- name = "Swap Set 3",
- description = "Proper Format is id,id:Slot" +
- "
For example: 6570,21295:Cape" +
- "
Valid Slots: Helmet, Cape, Amulet, Weapon, Torso, Shield, Legs, Head, Hands, Boots, Jaw, Ring, Ammo",
- titleSection = "swaps",
- position = 3,
- parse = true,
- clazz = Parse.class,
- method = "parse"
- )
- default String set3()
- {
- return "";
- }
-
- //////////////////Experimental Functions
-
@ConfigSection(
position = 4,
keyName = "experimentalSection",
@@ -203,18 +137,4 @@ public interface TMorphConfig extends Config
{
return 0;
}
-
- @ConfigTitleSection(
- keyName = "copy",
- name = "If you would like to copy your equipped" +
- "
gear, type \"::tmorph copy\" in chat." +
- "
This will copy your gear to your" +
- "
clipboard for easy copy paste.",
- description = "",
- position = 50
- )
- default Title copy()
- {
- return new Title();
- }
}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TmorphSet.java b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TmorphSet.java
new file mode 100644
index 0000000000..d4514c336b
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/TmorphSet.java
@@ -0,0 +1,41 @@
+/*
+ * Copyright (c) 2019, ganom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.client.plugins.tmorph;
+
+import lombok.Data;
+
+@Data
+public class TmorphSet
+{
+ private String name;
+ private int helmet;
+ private int cape;
+ private int amulet;
+ private int weapon;
+ private int torso;
+ private int shield;
+ private int legs;
+ private int hands;
+ private int boots;
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/ui/EquipSlot.java b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/ui/EquipSlot.java
new file mode 100644
index 0000000000..3793a2270e
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/ui/EquipSlot.java
@@ -0,0 +1,123 @@
+/*
+ * Copyright (c) 2019, ganom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.client.plugins.tmorph.ui;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import javax.swing.ImageIcon;
+import javax.swing.JComboBox;
+import lombok.Getter;
+import net.runelite.api.Client;
+import net.runelite.api.kit.KitType;
+import net.runelite.client.game.ItemManager;
+import net.runelite.client.plugins.tmorph.TMorph;
+import net.runelite.client.ui.ColorScheme;
+import net.runelite.client.ui.components.ComboBoxIconEntry;
+import net.runelite.client.ui.components.ComboBoxListRenderer;
+import net.runelite.client.util.AsyncBufferedImage;
+import net.runelite.client.util.ImageUtil;
+import net.runelite.http.api.item.ItemEquipmentStats;
+import net.runelite.http.api.item.ItemStats;
+import org.pushingpixels.substance.internal.utils.SubstanceDropDownButton;
+
+@Getter
+public class EquipSlot extends JComboBox
+{
+ private final ComboBoxIconEntry original;
+ private Map boxMap;
+ private KitType kitType;
+
+ EquipSlot(KitType kitType)
+ {
+ super();
+ this.kitType = kitType;
+ this.boxMap = new LinkedHashMap<>();
+ setPreferredSize(new Dimension(200, 42));
+ setBackground(ColorScheme.DARK_GRAY_COLOR);
+ setRenderer(new ComboBoxListRenderer());
+ original = new ComboBoxIconEntry(
+ new ImageIcon(ImageUtil.getResourceStreamFromClass(TMorph.class, kitType.getName().toLowerCase() + ".png")),
+ kitType.getName(),
+ null
+ );
+ addItem(original);
+ setSelectedIndex(0);
+ for (Component component : getComponents())
+ {
+ if (component instanceof SubstanceDropDownButton)
+ {
+ remove(component);
+ }
+ }
+ }
+
+ public void populate(Client client, ItemManager itemManager)
+ {
+ assert client.isClientThread() : "Populate must be called on client thread";
+
+ for (int i = 0; i < client.getItemCount(); i++)
+ {
+ ItemStats stats = itemManager.getItemStats(i, false);
+
+ if (stats == null)
+ {
+ continue;
+ }
+
+ if (!stats.isEquipable())
+ {
+ continue;
+ }
+
+ ItemEquipmentStats equipment = stats.getEquipment();
+
+ if (equipment == null)
+ {
+ continue;
+ }
+
+ if (equipment.getSlot() != kitType.getIndex())
+ {
+ continue;
+ }
+
+ AsyncBufferedImage image = itemManager.getImage(i);
+
+ if (image == null)
+ {
+ continue;
+ }
+
+ final ComboBoxIconEntry entry = new ComboBoxIconEntry(
+ new ImageIcon(image),
+ client.getItemDefinition(i).getName(),
+ client.getItemDefinition(i)
+ );
+ boxMap.put(i, entry);
+ addItem(entry);
+ }
+ }
+}
diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/ui/TPanel.java b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/ui/TPanel.java
new file mode 100644
index 0000000000..603d1d21a1
--- /dev/null
+++ b/runelite-client/src/main/java/net/runelite/client/plugins/tmorph/ui/TPanel.java
@@ -0,0 +1,439 @@
+/*
+ * Copyright (c) 2019, ganom
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice, this
+ * list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright notice,
+ * this list of conditions and the following disclaimer in the documentation
+ * and/or other materials provided with the distribution.
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+ * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
+ * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+ * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+package net.runelite.client.plugins.tmorph.ui;
+
+import com.google.common.collect.ImmutableSet;
+import java.awt.BorderLayout;
+import java.awt.Color;
+import java.awt.Dimension;
+import java.awt.GridLayout;
+import java.awt.event.ItemEvent;
+import java.util.HashMap;
+import java.util.LinkedHashMap;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import javax.inject.Inject;
+import javax.swing.Box;
+import javax.swing.BoxLayout;
+import static javax.swing.BoxLayout.Y_AXIS;
+import javax.swing.JButton;
+import javax.swing.JComboBox;
+import javax.swing.JLabel;
+import javax.swing.JOptionPane;
+import javax.swing.JPanel;
+import javax.swing.JScrollPane;
+import javax.swing.border.EmptyBorder;
+import lombok.extern.slf4j.Slf4j;
+import net.runelite.api.Client;
+import net.runelite.api.GameState;
+import net.runelite.api.ItemDefinition;
+import net.runelite.api.Player;
+import net.runelite.api.kit.KitType;
+import static net.runelite.api.kit.KitType.AMULET;
+import static net.runelite.api.kit.KitType.BOOTS;
+import static net.runelite.api.kit.KitType.CAPE;
+import static net.runelite.api.kit.KitType.HANDS;
+import static net.runelite.api.kit.KitType.HELMET;
+import static net.runelite.api.kit.KitType.LEGS;
+import static net.runelite.api.kit.KitType.SHIELD;
+import static net.runelite.api.kit.KitType.TORSO;
+import static net.runelite.api.kit.KitType.WEAPON;
+import net.runelite.api.widgets.Widget;
+import net.runelite.api.widgets.WidgetInfo;
+import net.runelite.client.database.DatabaseManager;
+import static net.runelite.client.database.data.Tables.TMORPH_SETS;
+import net.runelite.client.database.data.tables.records.TmorphSetsRecord;
+import net.runelite.client.game.ItemManager;
+import net.runelite.client.plugins.tmorph.TMorph;
+import net.runelite.client.plugins.tmorph.TmorphSet;
+import net.runelite.client.ui.PluginPanel;
+import net.runelite.client.ui.components.ComboBoxIconEntry;
+import net.runelite.client.util.Clipboard;
+import org.jooq.Record;
+import org.jooq.Result;
+import org.jooq.TableField;
+import org.jooq.impl.SQLDataType;
+
+@Slf4j
+public class TPanel extends PluginPanel
+{
+ private static final Set BLACKLIST = ImmutableSet.of(KitType.AMMUNITION, KitType.RING, KitType.HEAD, KitType.JAW);
+
+ private final Client client;
+ private final DatabaseManager databaseManager;
+ private final ItemManager itemManager;
+ private final TMorph plugin;
+
+ private final JComboBox selector;
+ private final Map equipSlots;
+ private final Map kitToId;
+ private final Map setMap;
+ private final ExecutorService executor;
+ private JPanel equipPanel;
+
+ @Inject
+ public TPanel(
+ final Client client,
+ final DatabaseManager databaseManager,
+ final ItemManager itemManager,
+ final TMorph plugin
+ )
+ {
+ super(false);
+ this.client = client;
+ this.databaseManager = databaseManager;
+ this.itemManager = itemManager;
+ this.plugin = plugin;
+ this.equipSlots = new LinkedHashMap<>();
+ this.kitToId = new HashMap<>();
+ this.setMap = new HashMap<>();
+ this.selector = new JComboBox<>();
+ this.executor = Executors.newSingleThreadExecutor();
+ init();
+ }
+
+ private void init()
+ {
+ selector.addItem("");
+ selector.setSelectedIndex(0);
+ selector.addActionListener((e) ->
+ {
+ String name = (String) selector.getSelectedItem();
+ Result recs = databaseManager.getDsl()
+ .selectFrom(TMORPH_SETS)
+ .where(TMORPH_SETS.SET_NAME.eq(name))
+ .fetch();
+
+ for (TmorphSetsRecord rec : recs)
+ {
+ for (Map.Entry entry : equipSlots.entrySet())
+ {
+ int id = rec.getValue(kitToField(entry.getKey()));
+ EquipSlot es = entry.getValue();
+ es.setSelectedItem(es.getBoxMap().getOrDefault(id, es.getOriginal()));
+ }
+ }
+ });
+
+ final JLabel title = new JLabel();
+ title.setText("Tmorph Sets");
+ title.setForeground(Color.WHITE);
+ title.setHorizontalAlignment(JLabel.CENTER);
+ title.setVerticalAlignment(JLabel.CENTER);
+
+ final JPanel titleAndMarkersPanel = new JPanel();
+ titleAndMarkersPanel.setLayout(new BorderLayout());
+ titleAndMarkersPanel.add(title, BorderLayout.CENTER);
+
+ final JPanel northAnchoredPanel = new JPanel();
+ northAnchoredPanel.setLayout(new BoxLayout(northAnchoredPanel, Y_AXIS));
+ northAnchoredPanel.setBorder(new EmptyBorder(0, 0, 10, 0));
+ northAnchoredPanel.add(titleAndMarkersPanel);
+ northAnchoredPanel.add(Box.createRigidArea(new Dimension(0, 10)));
+ northAnchoredPanel.add(selector);
+
+ final JPanel lol = new JPanel();
+ final JPanel containerPanel = new JPanel();
+
+ final JLabel caption = new JLabel();
+ caption.setText("Current Morph");
+ caption.setForeground(Color.WHITE);
+ caption.setHorizontalAlignment(JLabel.CENTER);
+ caption.setVerticalAlignment(JLabel.CENTER);
+
+ final JPanel captionPanel = new JPanel();
+ captionPanel.add(caption);
+
+ equipPanel = new JPanel();
+ equipPanel.setLayout(new GridLayout(11, 1, 1, 1));
+ addSlots();
+
+ containerPanel.setLayout(new BorderLayout());
+ containerPanel.add(captionPanel, BorderLayout.NORTH);
+ containerPanel.add(equipPanel, BorderLayout.CENTER);
+
+ lol.add(containerPanel);
+
+ final JPanel contentPanel = new JPanel();
+ final BoxLayout contentLayout = new BoxLayout(contentPanel, Y_AXIS);
+ contentPanel.setLayout(contentLayout);
+ contentPanel.add(lol);
+
+ final JPanel contentWrapper = new JPanel(new BorderLayout());
+ contentWrapper.add(Box.createGlue(), BorderLayout.CENTER);
+ contentWrapper.add(contentPanel, BorderLayout.NORTH);
+ final JScrollPane contentWrapperPane = new JScrollPane(contentWrapper);
+ contentWrapperPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_NEVER);
+
+ setLayout(new BorderLayout());
+ setBorder(new EmptyBorder(10, 10, 10, 10));
+ add(northAnchoredPanel, BorderLayout.NORTH);
+ add(contentWrapperPane, BorderLayout.CENTER);
+ executor.submit(this::populateSelector);
+ }
+
+ private void populateSelector()
+ {
+ if (!databaseManager.checkTableExists("TMORPH_SETS"))
+ {
+ databaseManager.getDsl().createTable(TMORPH_SETS)
+ .column(TMORPH_SETS.SET_NAME, SQLDataType.VARCHAR(255).nullable(false))
+ .column(TMORPH_SETS.HELMET, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.CAPE, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.AMULET, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.WEAPON, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.TORSO, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.SHIELD, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.LEGS, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.HANDS, SQLDataType.INTEGER.nullable(false))
+ .column(TMORPH_SETS.BOOTS, SQLDataType.INTEGER.nullable(false))
+ .execute();
+ }
+
+ Result recs = databaseManager.getDsl().selectFrom(TMORPH_SETS).fetch();
+ setMap.clear();
+ selector.removeAllItems();
+ selector.addItem("Select your set...");
+ selector.setSelectedIndex(0);
+
+ for (Record record : recs)
+ {
+ TmorphSet tmo = new TmorphSet();
+ String name = record.getValue(TMORPH_SETS.SET_NAME);
+ tmo.setName(name);
+ tmo.setHelmet(record.getValue(TMORPH_SETS.HELMET));
+ tmo.setCape(record.getValue(TMORPH_SETS.CAPE));
+ tmo.setAmulet(record.getValue(TMORPH_SETS.AMULET));
+ tmo.setWeapon(record.getValue(TMORPH_SETS.WEAPON));
+ tmo.setTorso(record.getValue(TMORPH_SETS.TORSO));
+ tmo.setShield(record.getValue(TMORPH_SETS.SHIELD));
+ tmo.setLegs(record.getValue(TMORPH_SETS.LEGS));
+ tmo.setHands(record.getValue(TMORPH_SETS.HANDS));
+ tmo.setBoots(record.getValue(TMORPH_SETS.BOOTS));
+ setMap.put(name, tmo);
+ selector.addItem(name);
+ }
+ }
+
+ private void addSlots()
+ {
+ int i = 0;
+
+ for (KitType kitType : KitType.values())
+ {
+ if (BLACKLIST.contains(kitType))
+ {
+ continue;
+ }
+
+ final EquipSlot equip = new EquipSlot(kitType);
+
+ equip.addItemListener((e) ->
+ {
+ if (e.getStateChange() == ItemEvent.SELECTED)
+ {
+ ComboBoxIconEntry combo = (ComboBoxIconEntry) e.getItem();
+
+ if (combo.getData() == null)
+ {
+ return;
+ }
+
+ ItemDefinition def = (ItemDefinition) combo.getData();
+ KitType type = null;
+
+ for (Map.Entry entry : equipSlots.entrySet())
+ {
+ if (entry.getValue() == e.getSource())
+ {
+ type = entry.getKey();
+ break;
+ }
+ }
+
+ if (type == null)
+ {
+ return;
+ }
+
+ if (kitToId.containsKey(type))
+ {
+ kitToId.replace(type, def.getId());
+ }
+ else
+ {
+ kitToId.put(type, def.getId());
+ }
+
+ if (client.getGameState() == GameState.LOGGED_IN)
+ {
+ Map s = generate();
+ }
+ }
+ });
+
+ equipSlots.put(kitType, equip);
+ equipPanel.add(equip);
+ i++;
+ }
+
+ final JButton setButton = new JButton("Set Active Morph");
+ setButton.addActionListener((e) -> plugin.setPanelMorph(generate()));
+ equipPanel.add(setButton);
+
+ final JButton saveButton = new JButton("Save Active Morph");
+ saveButton.addActionListener((e) ->
+ {
+ final String result = JOptionPane.showInputDialog(saveButton, "What would you like to name the set?");
+
+ Result records = databaseManager.getDsl()
+ .selectFrom(TMORPH_SETS)
+ .where(TMORPH_SETS.SET_NAME.eq(result))
+ .fetch();
+
+ boolean exists = records.isNotEmpty();
+
+ if (!exists)
+ {
+ databaseManager.getDsl().insertInto(TMORPH_SETS)
+ .set(TMORPH_SETS.SET_NAME, result)
+ .set(TMORPH_SETS.HELMET, kitToId.getOrDefault(HELMET, -1))
+ .set(TMORPH_SETS.CAPE, kitToId.getOrDefault(CAPE, -1))
+ .set(TMORPH_SETS.AMULET, kitToId.getOrDefault(AMULET, -1))
+ .set(TMORPH_SETS.WEAPON, kitToId.getOrDefault(WEAPON, -1))
+ .set(TMORPH_SETS.TORSO, kitToId.getOrDefault(TORSO, -1))
+ .set(TMORPH_SETS.SHIELD, kitToId.getOrDefault(SHIELD, -1))
+ .set(TMORPH_SETS.LEGS, kitToId.getOrDefault(LEGS, -1))
+ .set(TMORPH_SETS.HANDS, kitToId.getOrDefault(HANDS, -1))
+ .set(TMORPH_SETS.BOOTS, kitToId.getOrDefault(BOOTS, -1))
+ .execute();
+ executor.submit(this::populateSelector);
+ }
+ else
+ {
+ databaseManager.getDsl().update(TMORPH_SETS)
+ .set(TMORPH_SETS.HELMET, kitToId.getOrDefault(HELMET, -1))
+ .set(TMORPH_SETS.CAPE, kitToId.getOrDefault(CAPE, -1))
+ .set(TMORPH_SETS.AMULET, kitToId.getOrDefault(AMULET, -1))
+ .set(TMORPH_SETS.WEAPON, kitToId.getOrDefault(WEAPON, -1))
+ .set(TMORPH_SETS.TORSO, kitToId.getOrDefault(TORSO, -1))
+ .set(TMORPH_SETS.SHIELD, kitToId.getOrDefault(SHIELD, -1))
+ .set(TMORPH_SETS.LEGS, kitToId.getOrDefault(LEGS, -1))
+ .set(TMORPH_SETS.HANDS, kitToId.getOrDefault(HANDS, -1))
+ .set(TMORPH_SETS.BOOTS, kitToId.getOrDefault(BOOTS, -1))
+ .where(TMORPH_SETS.SET_NAME.eq(result))
+ .execute();
+ }
+ });
+ equipPanel.add(saveButton);
+ }
+
+ public void populateSlots()
+ {
+ for (EquipSlot slot : equipSlots.values())
+ {
+ slot.populate(client, itemManager);
+ }
+ }
+
+ public Map generate()
+ {
+ final StringBuilder sb = new StringBuilder();
+ final Player player = client.getLocalPlayer();
+
+ if (player == null
+ || player.getPlayerAppearance() == null
+ || client.getWidget(WidgetInfo.LOGIN_CLICK_TO_PLAY_SCREEN) != null
+ || client.getViewportWidget() == null)
+ {
+ return new HashMap<>();
+ }
+
+ for (KitType kitType : KitType.values())
+ {
+ if (BLACKLIST.contains(kitType))
+ {
+ continue;
+ }
+
+ final Widget widget = client.getWidget(kitType.getWidgetInfo());
+
+ if (widget == null || widget.getDynamicChildren() == null || widget.getDynamicChildren().length < 1)
+ {
+ continue;
+ }
+
+ final int id = itemManager.canonicalize(widget.getDynamicChildren()[1].getItemId());
+ final int kitId = kitToId.getOrDefault(kitType, -1);
+
+ if (kitId == -1)
+ {
+ continue;
+ }
+
+ sb.append(id);
+ sb.append(",");
+ sb.append(kitId);
+ sb.append(":");
+ sb.append(kitType.getName());
+ sb.append("\n");
+ }
+
+ final String s = sb.toString();
+ Clipboard.store(s);
+
+ return plugin.getNEWLINE_SPLITTER()
+ .withKeyValueSeparator(":")
+ .split(s);
+ }
+
+ private TableField kitToField(KitType kitType)
+ {
+ switch (kitType)
+ {
+ case HELMET:
+ return TMORPH_SETS.HELMET;
+ case CAPE:
+ return TMORPH_SETS.CAPE;
+ case AMULET:
+ return TMORPH_SETS.AMULET;
+ case WEAPON:
+ return TMORPH_SETS.WEAPON;
+ case TORSO:
+ return TMORPH_SETS.TORSO;
+ case SHIELD:
+ return TMORPH_SETS.SHIELD;
+ case LEGS:
+ return TMORPH_SETS.LEGS;
+ case HANDS:
+ return TMORPH_SETS.HANDS;
+ case BOOTS:
+ return TMORPH_SETS.BOOTS;
+ default:
+ return null;
+ }
+ }
+}
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/ammo.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/ammo.png
new file mode 100644
index 0000000000..51c9374c01
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/ammo.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/amulet.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/amulet.png
new file mode 100644
index 0000000000..6cf342730d
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/amulet.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/boots.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/boots.png
new file mode 100644
index 0000000000..c9580b9ef6
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/boots.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/cape.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/cape.png
new file mode 100644
index 0000000000..2050dbeab0
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/cape.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/hands.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/hands.png
new file mode 100644
index 0000000000..adb70ef4c0
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/hands.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/helmet.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/helmet.png
new file mode 100644
index 0000000000..798dbbb78f
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/helmet.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/legs.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/legs.png
new file mode 100644
index 0000000000..085779915f
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/legs.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/nav.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/nav.png
new file mode 100644
index 0000000000..1a23abe2dc
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/nav.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/shield.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/shield.png
new file mode 100644
index 0000000000..52f1aa3330
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/shield.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/torso.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/torso.png
new file mode 100644
index 0000000000..96f50a04d9
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/torso.png differ
diff --git a/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/weapon.png b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/weapon.png
new file mode 100644
index 0000000000..44f7534fa6
Binary files /dev/null and b/runelite-client/src/main/resources/net/runelite/client/plugins/tmorph/weapon.png differ