itemmanager: updated to use local resources for stats, also addding discord client service. (#1000)
* Add Discord Client * Add Discord message and embed utilities * Add plugin config base * Add base plugin and NPC Loot Log * Fixes Removes duplicated code Add local player death events * Add getIcon method * Remove unused Import * Move Item Stats from ItemManager to local resources. Add & Update Discord Embed Service. Remove DiscordWebHook plugin, it was pretty bad, can do better. * Fix lombok @NonNull tag. * Remove old imports. * Fix travis.
This commit is contained in:
@@ -0,0 +1,99 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord;
|
||||
|
||||
import com.google.gson.Gson;
|
||||
import java.io.IOException;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import net.runelite.http.api.RuneLiteAPI;
|
||||
import okhttp3.Call;
|
||||
import okhttp3.Callback;
|
||||
import okhttp3.HttpUrl;
|
||||
import okhttp3.MediaType;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.RequestBody;
|
||||
import okhttp3.Response;
|
||||
|
||||
@Slf4j
|
||||
public class DiscordClient
|
||||
{
|
||||
public static final Gson gson = new Gson();
|
||||
private static final MediaType JSON = MediaType.parse("application/json");
|
||||
|
||||
public void message(HttpUrl url, DiscordMessage discordMessage)
|
||||
{
|
||||
log.info("Message being sent");
|
||||
message(url, discordMessage, 0, 5);
|
||||
}
|
||||
|
||||
private void message(HttpUrl url, DiscordMessage discordMessage, int retryAttempt, int maxAttempts)
|
||||
{
|
||||
Request request = new Request.Builder()
|
||||
.post(RequestBody.create(JSON, gson.toJson(discordMessage)))
|
||||
.url(url)
|
||||
.build();
|
||||
|
||||
log.info("Attempting to message with {}", discordMessage);
|
||||
|
||||
RuneLiteAPI.CLIENT.newCall(request).enqueue(new Callback()
|
||||
{
|
||||
|
||||
@Override
|
||||
public void onFailure(Call call, IOException e)
|
||||
{
|
||||
log.warn("Unable to submit discord post.", e);
|
||||
if (retryAttempt < maxAttempts)
|
||||
{
|
||||
message(url, discordMessage, retryAttempt + 1, maxAttempts);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onResponse(Call call, Response response) throws IOException
|
||||
{
|
||||
try
|
||||
{
|
||||
if (response.body() == null)
|
||||
{
|
||||
log.error("API Call - Reponse was null.");
|
||||
return;
|
||||
}
|
||||
if (response.body().string().contains("You are being rate limited") && retryAttempt < maxAttempts)
|
||||
{
|
||||
log.error("You are being rate limited, retrying...");
|
||||
message(url, discordMessage, retryAttempt + 1, maxAttempts);
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
response.close();
|
||||
log.debug("Submitted discord log record");
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
import net.runelite.http.api.discord.embed.AuthorEmbed;
|
||||
import net.runelite.http.api.discord.embed.FieldEmbed;
|
||||
import net.runelite.http.api.discord.embed.FooterEmbed;
|
||||
import net.runelite.http.api.discord.embed.ImageEmbed;
|
||||
import net.runelite.http.api.discord.embed.ProviderEmbed;
|
||||
import net.runelite.http.api.discord.embed.ThumbnailEmbed;
|
||||
import net.runelite.http.api.discord.embed.VideoEmbed;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class DiscordEmbed
|
||||
{
|
||||
String title;
|
||||
String type;
|
||||
String description;
|
||||
String url;
|
||||
String timestamp;
|
||||
String iconurl;
|
||||
String color;
|
||||
FooterEmbed footer;
|
||||
ImageEmbed image;
|
||||
ThumbnailEmbed thumbnail;
|
||||
VideoEmbed video;
|
||||
ProviderEmbed provider;
|
||||
AuthorEmbed author;
|
||||
List<FieldEmbed> fields = new ArrayList<>();
|
||||
|
||||
public DiscordEmbed()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DiscordEmbed(String title, String description)
|
||||
{
|
||||
this(title, description, null);
|
||||
}
|
||||
|
||||
public DiscordEmbed(String title, String description, String url)
|
||||
{
|
||||
setTitle(title);
|
||||
setDescription(description);
|
||||
setUrl(url);
|
||||
}
|
||||
|
||||
public static DiscordMessage toDiscordMessage(DiscordEmbed embed, String username, String avatarURL)
|
||||
{
|
||||
return DiscordMessage.builder()
|
||||
.username(username)
|
||||
.avatarUrl(avatarURL)
|
||||
.content("")
|
||||
.embed(embed)
|
||||
.build();
|
||||
}
|
||||
|
||||
public DiscordMessage toDiscordMessage(String username, String avatarUrl)
|
||||
{
|
||||
return DiscordEmbed.toDiscordMessage(this, username, avatarUrl);
|
||||
}
|
||||
|
||||
public static class DiscordEmbedBuilder
|
||||
{
|
||||
List<FieldEmbed> fields = new ArrayList<>();
|
||||
|
||||
public DiscordEmbedBuilder field(FieldEmbed field)
|
||||
{
|
||||
fields.add(field);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,93 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord;
|
||||
|
||||
import com.google.gson.annotations.SerializedName;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class DiscordMessage
|
||||
{
|
||||
String username;
|
||||
String content;
|
||||
@SerializedName("avatar_url")
|
||||
String avatarUrl;
|
||||
@SerializedName("tts")
|
||||
boolean textToSpeech;
|
||||
List<DiscordEmbed> embeds = new ArrayList<>();
|
||||
|
||||
public DiscordMessage()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public DiscordMessage(String username, String content, String avatar_url)
|
||||
{
|
||||
this(username, content, avatar_url, false);
|
||||
}
|
||||
|
||||
public DiscordMessage(String username, String content, String avatar_url, boolean tts)
|
||||
{
|
||||
setUsername(username);
|
||||
setContent(content);
|
||||
setAvatarUrl(avatar_url);
|
||||
setTextToSpeech(tts);
|
||||
}
|
||||
|
||||
public void setUsername(String username)
|
||||
{
|
||||
if (username != null)
|
||||
{
|
||||
this.username = username.substring(0, Math.min(31, username.length()));
|
||||
}
|
||||
else
|
||||
{
|
||||
this.username = null;
|
||||
}
|
||||
}
|
||||
|
||||
public static class DiscordMessageBuilder
|
||||
{
|
||||
List<DiscordEmbed> embeds = new ArrayList<>();
|
||||
|
||||
public DiscordMessageBuilder embed(DiscordEmbed embed)
|
||||
{
|
||||
embeds.add(embed);
|
||||
return this;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord.embed;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class AuthorEmbed
|
||||
{
|
||||
String name;
|
||||
String url;
|
||||
String icon_url;
|
||||
String proxy_icon_url;
|
||||
}
|
||||
@@ -0,0 +1,50 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord.embed;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.NonNull;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class FieldEmbed
|
||||
{
|
||||
@NonNull
|
||||
String name;
|
||||
@NonNull
|
||||
String value;
|
||||
boolean inline;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord.embed;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class FooterEmbed
|
||||
{
|
||||
String text;
|
||||
String icon_url;
|
||||
String proxy_icon_url;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord.embed;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class ImageEmbed
|
||||
{
|
||||
String url;
|
||||
String proxy_url;
|
||||
int height;
|
||||
int width;
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord.embed;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class ProviderEmbed
|
||||
{
|
||||
String name;
|
||||
String url;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord.embed;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class ThumbnailEmbed
|
||||
{
|
||||
String url;
|
||||
String proxy_url;
|
||||
int height;
|
||||
int width;
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2018, Forsco <https://github.com/forsco>
|
||||
* 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.http.api.discord.embed;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.Setter;
|
||||
import lombok.ToString;
|
||||
|
||||
@Getter
|
||||
@Setter
|
||||
@Builder
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@ToString
|
||||
public class VideoEmbed
|
||||
{
|
||||
String url;
|
||||
int height;
|
||||
int width;
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import lombok.Value;
|
||||
@Value
|
||||
public class ItemStats
|
||||
{
|
||||
private String name;
|
||||
private boolean quest;
|
||||
private boolean equipable;
|
||||
private double weight;
|
||||
@@ -76,7 +77,7 @@ public class ItemStats
|
||||
newEquipment = equipment;
|
||||
}
|
||||
|
||||
return new ItemStats(quest, equipable, newWeight, newEquipment);
|
||||
return new ItemStats(name, quest, equipable, newWeight, newEquipment);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -28,9 +28,14 @@ import com.google.common.cache.CacheBuilder;
|
||||
import com.google.common.cache.CacheLoader;
|
||||
import com.google.common.cache.LoadingCache;
|
||||
import com.google.common.collect.ImmutableMap;
|
||||
import com.google.gson.Gson;
|
||||
import com.google.gson.reflect.TypeToken;
|
||||
import java.awt.Color;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.lang.reflect.Type;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -50,116 +55,7 @@ import static net.runelite.api.Constants.HIGH_ALCHEMY_MULTIPLIER;
|
||||
import net.runelite.api.GameState;
|
||||
import net.runelite.api.ItemDefinition;
|
||||
import net.runelite.api.ItemID;
|
||||
import static net.runelite.api.ItemID.AGILITY_CAPE;
|
||||
import static net.runelite.api.ItemID.AGILITY_CAPET;
|
||||
import static net.runelite.api.ItemID.AGILITY_CAPET_13341;
|
||||
import static net.runelite.api.ItemID.AGILITY_CAPE_13340;
|
||||
import static net.runelite.api.ItemID.BOOTS_OF_LIGHTNESS;
|
||||
import static net.runelite.api.ItemID.BOOTS_OF_LIGHTNESS_89;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_11861;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13589;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13590;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13601;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13602;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13613;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13614;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13625;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13626;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13637;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13638;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13677;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_13678;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_21076;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_BOOTS_21078;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_11853;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13581;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13582;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13593;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13594;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13605;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13606;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13617;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13618;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13629;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13630;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13669;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_13670;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_21064;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_CAPE_21066;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_11859;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13587;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13588;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13599;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13600;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13611;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13612;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13623;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13624;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13635;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13636;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13675;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_13676;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_21073;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_GLOVES_21075;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_11851;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13579;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13580;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13591;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13592;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13603;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13604;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13615;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13616;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13627;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13628;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13667;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_13668;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_21061;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_HOOD_21063;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_11857;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13585;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13586;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13597;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13598;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13609;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13610;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13621;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13622;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13633;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13634;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13673;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_13674;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_21070;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_LEGS_21072;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_11855;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13583;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13584;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13595;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13596;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13607;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13608;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13619;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13620;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13631;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13632;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13671;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_13672;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_21067;
|
||||
import static net.runelite.api.ItemID.GRACEFUL_TOP_21069;
|
||||
import static net.runelite.api.ItemID.MAX_CAPE;
|
||||
import static net.runelite.api.ItemID.MAX_CAPE_13342;
|
||||
import static net.runelite.api.ItemID.PENANCE_GLOVES;
|
||||
import static net.runelite.api.ItemID.PENANCE_GLOVES_10554;
|
||||
import static net.runelite.api.ItemID.SPOTTED_CAPE;
|
||||
import static net.runelite.api.ItemID.SPOTTED_CAPE_10073;
|
||||
import static net.runelite.api.ItemID.SPOTTIER_CAPE;
|
||||
import static net.runelite.api.ItemID.SPOTTIER_CAPE_10074;
|
||||
import static net.runelite.api.ItemID.*;
|
||||
import net.runelite.api.Sprite;
|
||||
import net.runelite.api.events.GameStateChanged;
|
||||
import net.runelite.api.events.PostItemDefinition;
|
||||
@@ -174,33 +70,6 @@ import org.jetbrains.annotations.NotNull;
|
||||
@Slf4j
|
||||
public class ItemManager
|
||||
{
|
||||
@Value
|
||||
private static class ImageKey
|
||||
{
|
||||
private final int itemId;
|
||||
private final int itemQuantity;
|
||||
private final boolean stackable;
|
||||
}
|
||||
|
||||
@Value
|
||||
private static class OutlineKey
|
||||
{
|
||||
private final int itemId;
|
||||
private final int itemQuantity;
|
||||
private final Color outlineColor;
|
||||
}
|
||||
|
||||
private final Client client;
|
||||
private final ScheduledExecutorService scheduledExecutorService;
|
||||
private final ClientThread clientThread;
|
||||
|
||||
private final ItemClient itemClient = new ItemClient();
|
||||
private Map<Integer, ItemPrice> itemPrices = Collections.emptyMap();
|
||||
private Map<Integer, ItemStats> itemStats = Collections.emptyMap();
|
||||
private final LoadingCache<ImageKey, AsyncBufferedImage> itemImages;
|
||||
private final LoadingCache<Integer, ItemDefinition> itemDefinitions;
|
||||
private final LoadingCache<OutlineKey, BufferedImage> itemOutlines;
|
||||
|
||||
// Worn items with weight reducing property have a different worn and inventory ItemID
|
||||
private static final ImmutableMap<Integer, Integer> WORN_ITEMS = ImmutableMap.<Integer, Integer>builder().
|
||||
put(BOOTS_OF_LIGHTNESS_89, BOOTS_OF_LIGHTNESS).
|
||||
@@ -263,7 +132,16 @@ public class ItemManager
|
||||
put(AGILITY_CAPET_13341, AGILITY_CAPET).
|
||||
put(AGILITY_CAPE_13340, AGILITY_CAPE).
|
||||
build();
|
||||
|
||||
private final Client client;
|
||||
private final ScheduledExecutorService scheduledExecutorService;
|
||||
private final ClientThread clientThread;
|
||||
private final ItemClient itemClient = new ItemClient();
|
||||
private final ImmutableMap<Integer, ItemStats> itemStatMap;
|
||||
private final LoadingCache<ImageKey, AsyncBufferedImage> itemImages;
|
||||
private final LoadingCache<Integer, ItemDefinition> itemDefinitions;
|
||||
private final LoadingCache<OutlineKey, BufferedImage> itemOutlines;
|
||||
private Map<Integer, ItemPrice> itemPrices = Collections.emptyMap();
|
||||
private Map<Integer, ItemStats> itemStats = Collections.emptyMap();
|
||||
@Inject
|
||||
public ItemManager(Client client, ScheduledExecutorService executor, ClientThread clientThread)
|
||||
{
|
||||
@@ -309,6 +187,16 @@ public class ItemManager
|
||||
return loadItemOutline(key.itemId, key.itemQuantity, key.outlineColor);
|
||||
}
|
||||
});
|
||||
|
||||
final Gson gson = new Gson();
|
||||
|
||||
final Type typeToken = new TypeToken<Map<Integer, ItemStats>>()
|
||||
{
|
||||
}.getType();
|
||||
|
||||
final InputStream statsFile = getClass().getResourceAsStream("/item_stats.json");
|
||||
final Map<Integer, ItemStats> stats = gson.fromJson(new InputStreamReader(statsFile), typeToken);
|
||||
itemStatMap = ImmutableMap.copyOf(stats);
|
||||
}
|
||||
|
||||
private void loadPrices()
|
||||
@@ -352,7 +240,6 @@ public class ItemManager
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe
|
||||
public void onGameStateChanged(final GameStateChanged event)
|
||||
{
|
||||
@@ -392,7 +279,7 @@ public class ItemManager
|
||||
/**
|
||||
* Look up an item's price
|
||||
*
|
||||
* @param itemID item id
|
||||
* @param itemID item id
|
||||
* @param ignoreUntradeableMap should the price returned ignore the {@link UntradeableItemMapping}
|
||||
* @return item price
|
||||
*/
|
||||
@@ -473,7 +360,7 @@ public class ItemManager
|
||||
return null;
|
||||
}
|
||||
|
||||
return itemStats.get(canonicalize(itemId));
|
||||
return itemStatMap.get(canonicalize(itemId));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -629,4 +516,20 @@ public class ItemManager
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@Value
|
||||
private static class ImageKey
|
||||
{
|
||||
private final int itemId;
|
||||
private final int itemQuantity;
|
||||
private final boolean stackable;
|
||||
}
|
||||
|
||||
@Value
|
||||
private static class OutlineKey
|
||||
{
|
||||
private final int itemId;
|
||||
private final int itemQuantity;
|
||||
private final Color outlineColor;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
package net.runelite.client.game;
|
||||
|
||||
import lombok.Value;
|
||||
|
||||
@Value
|
||||
public class ItemStat
|
||||
{
|
||||
private int slot;
|
||||
|
||||
private int astab;
|
||||
private int aslash;
|
||||
private int acrush;
|
||||
private int amagic;
|
||||
private int arange;
|
||||
|
||||
private int dstab;
|
||||
private int dslash;
|
||||
private int dcrush;
|
||||
private int dmagic;
|
||||
private int drange;
|
||||
|
||||
private int str;
|
||||
private int rstr;
|
||||
private int mdmg;
|
||||
private int prayer;
|
||||
private int aspeed;
|
||||
}
|
||||
@@ -48,7 +48,7 @@ import net.runelite.http.api.item.ItemStats;
|
||||
public class ItemStatOverlay extends Overlay
|
||||
{
|
||||
// Unarmed attack speed is 6
|
||||
private static final ItemStats UNARMED = new ItemStats(false, true, 0,
|
||||
private static final ItemStats UNARMED = new ItemStats("", false, true, 0,
|
||||
ItemEquipmentStats.builder()
|
||||
.aspeed(6)
|
||||
.build());
|
||||
|
||||
63437
runelite-client/src/main/resources/item_stats.json
Normal file
63437
runelite-client/src/main/resources/item_stats.json
Normal file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user