Skip to content

Commit c64b94d

Browse files
more
literally just copy pasted most things from here: AntiCope#20 also changed the "contact repo"
1 parent 6331236 commit c64b94d

File tree

7 files changed

+107
-13
lines changed

7 files changed

+107
-13
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ yarn_mappings=1.21.3+build.2
66
loader_version=0.16.9
77

88
# Mod Properties
9-
mod_version=0.2
9+
mod_version=0.6.9
1010
maven_group=anticope
1111
archives_base_name=e621-addon
1212

src/main/java/anticope/esixtwoone/ImageHUD.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@
2525
import anticope.esixtwoone.sources.Source.Size;
2626
import anticope.esixtwoone.sources.Source.SourceType;
2727

28+
import javax.imageio.ImageIO;
29+
30+
import java.io.ByteArrayInputStream;
31+
import java.io.ByteArrayOutputStream;
32+
2833
import static meteordevelopment.meteorclient.MeteorClient.mc;
2934
import static meteordevelopment.meteorclient.utils.Utils.WHITE;
3035

@@ -56,7 +61,11 @@ public class ImageHUD extends HudElement {
5661
.defaultValue(100)
5762
.min(10)
5863
.sliderRange(70, 1000)
59-
.onChanged(o -> updateSize())
64+
.onChanged(o -> {
65+
if (o != 0) {
66+
updateSize();
67+
}
68+
})
6069
.build()
6170
);
6271

@@ -154,8 +163,10 @@ private void loadImage() {
154163
return;
155164
}
156165
E621Hud.LOG.info(url);
157-
var img = NativeImage.read(Http.get(url).sendInputStream());
158-
mc.getTextureManager().registerTexture(TEXID, new NativeImageBackedTexture(img));
166+
var img = ImageIO.read(Http.get(url).sendInputStream());
167+
var baos = new ByteArrayOutputStream();
168+
ImageIO.write(img, "png", baos);
169+
mc.getTextureManager().registerTexture(TEXID, new NativeImageBackedTexture(NativeImage.read(new ByteArrayInputStream(baos.toByteArray()))));
159170
empty = false;
160171
} catch (Exception ex) {
161172
E621Hud.LOG.error("Failed to render the image.", ex);
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package anticope.esixtwoone.sources;
2+
3+
import com.google.gson.JsonArray;
4+
import com.google.gson.JsonElement;
5+
import com.google.gson.JsonObject;
6+
7+
import meteordevelopment.meteorclient.utils.network.Http;
8+
9+
public class DanBooru extends Source {
10+
11+
private final String domain;
12+
private final int lastPage;
13+
14+
public DanBooru(String domain, int lastPage) {
15+
this.domain = domain;
16+
this.lastPage = lastPage;
17+
}
18+
19+
@Override
20+
public void reset() {}
21+
22+
@Override
23+
public String randomImage(String filter, Size size) {
24+
String query = String.format("%s/posts.json?tags=%s&page=%d&format=json&limit=10", domain, filter, random.nextInt(0, lastPage));
25+
JsonElement result = Http.get(query).sendJson(JsonElement.class);
26+
if (result == null) return null;
27+
28+
if (result instanceof JsonArray array) {
29+
if (array.get(random.nextInt(0, Math.min(11, array.size()))) instanceof JsonObject post) {
30+
return switch (size) {
31+
case preview -> post.get("preview_file_url").getAsString();
32+
case sample -> post.get("large_file_url").getAsString();
33+
case file -> post.get("file_url").getAsString();
34+
};
35+
}
36+
}
37+
return null;
38+
}
39+
}

src/main/java/anticope/esixtwoone/sources/ESixTwoOne.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,11 @@
77

88
public class ESixTwoOne extends Source {
99

10+
private final String domain;
11+
12+
public ESixTwoOne(String domain) {
13+
this.domain = domain;
14+
}
1015
private int maxPage = 30;
1116

1217
@Override
@@ -17,15 +22,14 @@ public void reset() {
1722
@Override
1823
public String randomImage(String filter, Size size) {
1924
int pageNum = random.nextInt(1, maxPage);
20-
JsonObject result = Http.get("https://e621.net/posts.json?limit=320&tags="+filter+"&page="+ pageNum).sendJson(JsonObject.class);
25+
JsonObject result = Http.get(domain + "/posts.json?limit=320&tags="+filter+"&page="+ pageNum).sendJson(JsonObject.class);
2126
if (result.get("posts") instanceof JsonArray array) {
2227
if(array.size() <= 0) {
2328
maxPage = pageNum - 1;
2429
return null;
2530
}
2631
if (array.get(random.nextInt(array.size())) instanceof JsonObject post) {
27-
var url = post.get(size.toString()).getAsJsonObject().get("url").getAsString();
28-
return url;
32+
return post.get(size.toString()).getAsJsonObject().get("url").getAsString();
2933
}
3034
}
3135
return null;
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package anticope.esixtwoone.sources;
2+
3+
import com.google.gson.JsonElement;
4+
import com.google.gson.JsonObject;
5+
6+
import meteordevelopment.meteorclient.utils.network.Http;
7+
8+
public class NekosLife extends Source {
9+
10+
private final String domain;
11+
12+
public NekosLife(String domain) {
13+
this.domain = domain;
14+
}
15+
16+
@Override
17+
public void reset() {}
18+
19+
@Override
20+
public String randomImage(String filter, Size size) {
21+
String query = String.format("%s/api/v2/img/%s", domain, filter);
22+
JsonElement result = Http.get(query).sendJson(JsonElement.class);
23+
if (result == null) return null;
24+
25+
if (result instanceof JsonObject object) {
26+
if (object.get("url") != null) {
27+
return object.get("url").getAsString();
28+
}
29+
}
30+
31+
return null;
32+
}
33+
}

src/main/java/anticope/esixtwoone/sources/Source.java

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,12 @@ public enum Size {
1515

1616
public enum SourceType {
1717
e621,
18+
e926,
1819
gelbooru,
19-
rule34
20+
danbooru,
21+
safebooru,
22+
rule34,
23+
nekoslife
2024
}
2125

2226
protected final Random random = new Random();
@@ -36,10 +40,13 @@ public String getRandomImage(String filter, Size size) {
3640

3741
public static Source getSource(SourceType type) {
3842
return switch (type) {
39-
case e621 -> new ESixTwoOne();
40-
case gelbooru -> new GelBooru("https://gelbooru.com/", 700);
41-
case rule34 -> new GelBooru("https://api.rule34.xxx/", 700);
42-
default -> null;
43+
case e621 -> new ESixTwoOne("https://e621.net");
44+
case e926 -> new ESixTwoOne("https://e926.net");
45+
case gelbooru -> new GelBooru("https://gelbooru.com", 700);
46+
case danbooru -> new DanBooru("https://danbooru.donmai.us", 700);
47+
case safebooru -> new GelBooru("https://safebooru.org", 700);
48+
case rule34 -> new GelBooru("https://api.rule34.xxx", 700);
49+
case nekoslife -> new NekosLife("https://nekos.life");
4350
};
4451
}
4552
}

src/main/resources/fabric.mod.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
"AntiCope"
99
],
1010
"contact": {
11-
"repo": "https://github.com/MeteorDevelopment/meteor-addon-template"
11+
"repo": "https://github.com/AntiCope/meteor-e621-integration"
1212
},
1313
"icon": "assets/e621/icon.png",
1414
"environment": "client",

0 commit comments

Comments
 (0)