diff options
author | Tyler Murphy <tylermurphy534@gmail.com> | 2022-08-26 06:45:57 -0400 |
---|---|---|
committer | Tyler Murphy <tylermurphy534@gmail.com> | 2022-08-26 06:45:57 -0400 |
commit | 039cb6258fa8934a22a8c06806f2419730d5eede (patch) | |
tree | fbc3401746ceb903d3ab7ab624b208ec4358024a | |
parent | v7 (diff) | |
download | ken-039cb6258fa8934a22a8c06806f2419730d5eede.tar.gz ken-039cb6258fa8934a22a8c06806f2419730d5eede.tar.bz2 ken-039cb6258fa8934a22a8c06806f2419730d5eede.zip |
v7
8 files changed, 156 insertions, 163 deletions
diff --git a/src/main/java/net/tylermurphy/ken/command/Responder.java b/src/main/java/net/tylermurphy/ken/command/Responder.java index 75f685b..014e745 100644 --- a/src/main/java/net/tylermurphy/ken/command/Responder.java +++ b/src/main/java/net/tylermurphy/ken/command/Responder.java @@ -13,18 +13,13 @@ import net.dv8tion.jda.api.hooks.ListenerAdapter; import net.dv8tion.jda.api.interactions.InteractionHook; import net.dv8tion.jda.api.interactions.callbacks.IReplyCallback; import net.dv8tion.jda.api.interactions.commands.OptionMapping; -import net.dv8tion.jda.api.interactions.components.ActionComponent; import net.dv8tion.jda.api.interactions.components.ActionRow; import net.dv8tion.jda.api.interactions.components.LayoutComponent; import net.dv8tion.jda.api.interactions.components.buttons.Button; import net.dv8tion.jda.api.interactions.components.selections.SelectMenu; -import net.dv8tion.jda.api.interactions.components.selections.SelectOption; -import net.dv8tion.jda.api.requests.restaction.WebhookMessageEditAction; import net.dv8tion.jda.api.requests.restaction.interactions.ReplyCallbackAction; import net.dv8tion.jda.api.utils.FileUpload; import net.tylermurphy.ken.Ken; -import net.tylermurphy.ken.command.Register; -import net.tylermurphy.ken.command.Response; import net.tylermurphy.ken.command.fun.*; import net.tylermurphy.ken.command.main.*; import net.tylermurphy.ken.command.music.*; @@ -134,7 +129,6 @@ public class Responder extends ListenerAdapter { .setTitle(":x: **Error**") .setDescription(e.getCause() != null ? e.getCause().getMessage() : e.getMessage()); event.replyEmbeds(builder.build()).setEphemeral(true).queue(); - e.printStackTrace(); } } @@ -234,7 +228,7 @@ public class Responder extends ListenerAdapter { } private void reply(Response response, IReplyCallback event){ - if(response.error()) { + if(response.isError()) { EmbedBuilder builder = Ken.getInstance().getDefaultEmbed() .setColor(Color.RED) .setDescription(response.getMessage()); @@ -248,18 +242,18 @@ public class Responder extends ListenerAdapter { } if(response.hasButtons()) message = message.addActionRow(response.getButtons()); if(response.hasSelectMenu()) message = message.addActionRow(response.getSelectMenu()); - if(response.hasFile()) message = message.addFiles(FileUpload.fromData(response.getFile())); + if(response.hasFile()) message = message.addFiles(FileUpload.fromData(response.getFile(),response.getFileName())); message.setEphemeral(response.isHidden()).queue(); } } private void edit(Response response, InteractionHook hook){ - if(response.error()) { + if(response.isError()) { EmbedBuilder builder = Ken.getInstance().getDefaultEmbed() .setColor(Color.RED) .setDescription(response.getMessage()); hook.sendMessageEmbeds(builder.build()).queue(); - } else if(response.remove()) { + } else if(response.isDelete()) { hook.deleteOriginal().queue(); } else { if(response.hasEmbed()) { diff --git a/src/main/java/net/tylermurphy/ken/command/Response.java b/src/main/java/net/tylermurphy/ken/command/Response.java index ff69cda..763ccae 100644 --- a/src/main/java/net/tylermurphy/ken/command/Response.java +++ b/src/main/java/net/tylermurphy/ken/command/Response.java @@ -4,74 +4,88 @@ import net.dv8tion.jda.api.entities.MessageEmbed; import net.dv8tion.jda.api.interactions.components.buttons.Button; import net.dv8tion.jda.api.interactions.components.selections.SelectMenu; -import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class Response { - private final String message; - private final String type; - private final MessageEmbed[] embeds; - private final List<Button> buttons; - private final SelectMenu.Builder menu; - private final File file; + private String message; + private String type; - private boolean hidden = false; + private MessageEmbed[] embeds; - private Response(String type, String message, File file, MessageEmbed... embed){ - this.type = type; - this.message = message; - this.embeds = embed; - this.file = file; - this.buttons = new ArrayList<>(); - menu = SelectMenu.create("null"); - } + private List<Button> buttons; + private SelectMenu menu; + + private byte[] data; + private String fileName; + + private boolean hidden = false; public static Response error(String message){ - return new Response("error", message, null, null); + Response response = new Response(); + response.type = "error"; + response.message = message; + return response; } public static Response success(String message){ - return new Response("success", message, null, null); + Response response = new Response(); + response.type = "success"; + response.message = message; + return response; } - public static Response success(String message, File file){ - return new Response("success", message, file, null); + public static Response success(MessageEmbed... embeds){ + Response response = new Response(); + response.type = "success"; + response.embeds = embeds; + return response; } - public static Response success(MessageEmbed... embed){ - return new Response("success", "", null, embed); + public static Response delete() { + Response response = new Response(); + response.type = "delete"; + return response; } - public static Response delete() { return new Response("delete", "", null, null); } - public Response addPrimaryButton(String callback, String id, String label){ + if(buttons == null) buttons = new ArrayList<>(); buttons.add(Button.primary(callback + "_" + id ,label)); return this; } public Response addSecondaryButton(String callback, String id, String label){ + if(buttons == null) buttons = new ArrayList<>(); buttons.add(Button.secondary(callback + "_" + id ,label)); return this; } public Response addSuccessButton(String callback, String id, String label){ + if(buttons == null) buttons = new ArrayList<>(); buttons.add(Button.success(callback + "_" + id ,label)); return this; } public Response addDangerButton(String callback, String id, String label){ + if(buttons == null) buttons = new ArrayList<>(); buttons.add(Button.danger(callback + "_" + id ,label)); return this; } public Response addSelectMenu(String callback, String id, List<String> options){ - menu.setId(callback + "_" + id); + SelectMenu.Builder builder = SelectMenu.create(callback + "_" + id); for(int i=0; i<options.size(); i = i + 2) { - menu.addOption(options.get(i), options.get(i+1)); + builder.addOption(options.get(i), options.get(i+1)); } + menu = builder.build(); + return this; + } + + public Response setFile(byte[] data, String name){ + this.data = data; + this.fileName = name; return this; } @@ -80,21 +94,21 @@ public class Response { return this; } - public boolean error(){ + public boolean isError(){ return type.equals("error"); } - public boolean remove() { return type.equals("delete"); } + public boolean isDelete() { return type.equals("delete"); } + + public boolean isHidden() { return hidden; } public boolean hasEmbed() { return embeds != null; } - public boolean hasFile() { return file != null; } + public boolean hasFile() { return data != null; } - public boolean hasButtons() { return !buttons.isEmpty(); } + public boolean hasButtons() { return buttons != null; } - public boolean hasSelectMenu() { return !menu.getId().equals("null"); } - - public boolean isHidden() { return hidden; } + public boolean hasSelectMenu() { return menu != null; } public Button[] getButtons() { Button[] arr = new Button[buttons.size()]; @@ -103,11 +117,15 @@ public class Response { } public SelectMenu getSelectMenu(){ - return menu.build(); + return menu; + } + + public byte[] getFile(){ + return data; } - public File getFile(){ - return file; + public String getFileName(){ + return fileName; } public String getMessage(){ diff --git a/src/main/java/net/tylermurphy/ken/command/fun/Eject.java b/src/main/java/net/tylermurphy/ken/command/fun/Eject.java index a7d74eb..eac2a2c 100644 --- a/src/main/java/net/tylermurphy/ken/command/fun/Eject.java +++ b/src/main/java/net/tylermurphy/ken/command/fun/Eject.java @@ -16,8 +16,8 @@ public class Eject { @Option(name="member", description="Server member to eject", type=OptionType.USER, required=true) public Response execute(Member sender, List<Object> args){ Member ejected = (Member) args.get(0); - File file = GifFactory.generateEjectGif(ejected.getUser()); - return Response.success(ejected.getNickname() +" was ejected by "+sender.getNickname(), file); + byte[] data = GifFactory.generateEjectGif(ejected.getUser()); + return Response.success(ejected.getEffectiveName() +" was ejected by "+sender.getEffectiveName()).setFile(data, "eject.gif"); } } diff --git a/src/main/java/net/tylermurphy/ken/command/main/Help.java b/src/main/java/net/tylermurphy/ken/command/main/Help.java index 4970823..4b13bba 100644 --- a/src/main/java/net/tylermurphy/ken/command/main/Help.java +++ b/src/main/java/net/tylermurphy/ken/command/main/Help.java @@ -11,17 +11,15 @@ import net.tylermurphy.ken.command.Response; public class Help { - private final int PAGES = 5; - @Command(name="help", description="Gets information about all the commands in the plugin") public Response execute(Member sender){ - return Response.success(getPage(sender, 1)).addSecondaryButton("help", "previous", "Previous").addSecondaryButton("help", "next", "Next"); + return Response.success(pageEmbeds[0].setFooter("Page "+1+"/"+pageEmbeds.length).build()).addSecondaryButton("help", "previous", "Previous").addSecondaryButton("help", "next", "Next").addDangerButton("exit","exit","Exit"); } @ButtonCallback(name="help") public Response onButton(String id, Message message, Member sender){ int page; - int pages = PAGES; + int pages = pageEmbeds.length; if (message != null && message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) { page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5)); } else { @@ -31,66 +29,67 @@ public class Help { page = page - 1 < 1 ? pages : page - 1; else page = page + 1 > pages ? 1 : page + 1; - return Response.success(getPage(sender, page)); + return Response.success(pageEmbeds[page-1].setFooter("Page "+page+"/"+pageEmbeds.length).build()); } - private MessageEmbed getPage(Member sender, int page) { - String name = Ken.getInstance().getConfig().getString("botName"); - String supportServer = Ken.getInstance().getConfig().getString("supportServer"); - EmbedBuilder[] embeds = new EmbedBuilder[]{ - Ken.getInstance().getDefaultEmbed() - .setAuthor(name + " Command List", sender.getUser().getAvatarUrl()) - .appendDescription( - "These are all the commands that are included with "+name+"\n" + - "Read below to see what each command does, and what parameters the\n" + - "command requires. Any questions? Join our [discord support server](https://discord.gg/"+supportServer+")" - ).setFooter("Page "+page+"/"+PAGES), - Ken.getInstance().getDefaultEmbed() - .setAuthor(name + " Command List", sender.getUser().getAvatarUrl()) - .setTitle(":pen_ballpoint: **Main Commands**") - .appendDescription("**/help** Gives a list of commands\n") - .appendDescription("**/purge <amount>** Purges an amount of messages from a channel\n") - .setFooter("Page "+page+"/"+PAGES), - Ken.getInstance().getDefaultEmbed() - .setAuthor(name + " Command List", sender.getUser().getAvatarUrl()) - .setTitle(":musical_note: **Music Commands**") - .appendDescription("**/play <query>** Plays a song in a voice channel\n") - .appendDescription("**/join** Make the bot join your audio channel\n") - .appendDescription("**/leave** Make the bot leave your audio channel\n") - .appendDescription("**/pause** Pause the current playing track\n") - .appendDescription("**/resume** Resume the current paused track\n") - .appendDescription("**/stop** Stop the current playing track and clear queue\n") - .appendDescription("**/skip** Vote to skip the current track\n") - .appendDescription("**/forceskip** Force skip the current track\n") - .appendDescription("**/loop** Loop the current track\n") - .appendDescription("**/loopqueue** Loop the current song queue\n") - .appendDescription("**/remove <index>** Remove a song from the queue\n") - .appendDescription("**/nowplaying** See what track is currently playing\n") - .appendDescription("**/queue** View the current song queue\n") - .setFooter("Page "+page+"/"+PAGES), - Ken.getInstance().getDefaultEmbed() - .setAuthor(name + " Command List", sender.getUser().getAvatarUrl()) - .setTitle(":game_die: **Game Commands**") - .appendDescription("**/d6** Roll a d6 die\n") - .appendDescription("**/d8** Roll a d8 die\n") - .appendDescription("**/d12** Roll a d12 die\n") - .appendDescription("**/d20** Roll a d20 die\n") - .appendDescription("**/dice <sides>** Roll a dice with set sides\n") - .setFooter("Page "+page+"/"+PAGES), - Ken.getInstance().getDefaultEmbed() - .setAuthor(name + " Command List", sender.getUser().getAvatarUrl()) - .setTitle(":underage: **NSFW Commands**") - .appendDescription("**/hentai <query>** Retrieves a random hentai image\n") - .appendDescription("**/rule34 <query> <page>** Searches on rule34\n") - .appendDescription("**/gelbooru <query> <page>** Searches on gelbooru\n") - .appendDescription("**/danbooru <query> <page>** Searches on danbooru\n") - .appendDescription("**/konachan <query> <page>** Searches on konachan\n") - .appendDescription("**/yandere <query> <page>** Searches on yande.re\n") - .appendDescription("**/e621 <query> <page>** Searches on e621\n") - .appendDescription("**/nhentai <query>** Searches on nhentai\n") - .setFooter("Page "+page+"/"+PAGES) - }; - return embeds[page-1].build(); - } + String name = Ken.getInstance().getConfig().getString("botName"); + String supportServer = Ken.getInstance().getConfig().getString("supportServer"); + EmbedBuilder[] pageEmbeds = new EmbedBuilder[]{ + Ken.getInstance().getDefaultEmbed() + .setAuthor("Command List") + .appendDescription( + "These are all the commands that are included with "+name+"\n" + + "Read below to see what each command does, and what parameters the\n" + + "command requires. Any questions? Join our [discord support server](https://discord.gg/"+supportServer+")" + ), + Ken.getInstance().getDefaultEmbed() + .setAuthor("Command List") + .setTitle(":pen_ballpoint: **Main Commands**") + .appendDescription("**/help** Gives a list of commands\n") + .appendDescription("**/purge <amount>** Purges an amount of messages from a channel\n"), + Ken.getInstance().getDefaultEmbed() + .setAuthor("Command List") + .setTitle(":musical_note: **Music Commands**") + .appendDescription("**/play <query>** Plays a song in a voice channel\n") + .appendDescription("**/join** Make the bot join your audio channel\n") + .appendDescription("**/leave** Make the bot leave your audio channel\n") + .appendDescription("**/pause** Pause the current playing track\n") + .appendDescription("**/resume** Resume the current paused track\n") + .appendDescription("**/stop** Stop the current playing track and clear queue\n") + .appendDescription("**/skip** Vote to skip the current track\n") + .appendDescription("**/forceskip** Force skip the current track\n") + .appendDescription("**/loop** Loop the current track\n") + .appendDescription("**/loopqueue** Loop the current song queue\n") + .appendDescription("**/remove <index>** Remove a song from the queue\n") + .appendDescription("**/nowplaying** See what track is currently playing\n") + .appendDescription("**/queue** View the current song queue\n"), + Ken.getInstance().getDefaultEmbed() + .setAuthor("Command List") + .setTitle(":game_die: **Game Commands**") + .appendDescription("**/d6** Roll a d6 die\n") + .appendDescription("**/d8** Roll a d8 die\n") + .appendDescription("**/d12** Roll a d12 die\n") + .appendDescription("**/d20** Roll a d20 die\n") + .appendDescription("**/dice <sides>** Roll a dice with set sides\n"), + Ken.getInstance().getDefaultEmbed() + .setAuthor("Command List") + .setTitle(":man_detective: **Self Roles**") + .appendDescription("**/addrolespage <title> <description>** Add a page to the /roles command\n") + .appendDescription("**/deleterolespage <page>** Remove a page from the /roles command\n") + .appendDescription("**/addrole <role> <page>** Add a role to the /roles command\n") + .appendDescription("**/deleterole <role> <page>** Remove a role from the /roles command\n") + .appendDescription("**/roles** Add self roles to yourself\n"), + Ken.getInstance().getDefaultEmbed() + .setAuthor("Command List") + .setTitle(":underage: **NSFW Commands**") + .appendDescription("**/hentai <query>** Retrieves a random hentai image\n") + .appendDescription("**/rule34 <query> <page>** Searches on rule34\n") + .appendDescription("**/gelbooru <query> <page>** Searches on gelbooru\n") + .appendDescription("**/danbooru <query> <page>** Searches on danbooru\n") + .appendDescription("**/konachan <query> <page>** Searches on konachan\n") + .appendDescription("**/yandere <query> <page>** Searches on yande.re\n") + .appendDescription("**/e621 <query> <page>** Searches on e621\n") + .appendDescription("**/nhentai <query>** Searches on nhentai\n"), + }; } diff --git a/src/main/java/net/tylermurphy/ken/command/main/Roles.java b/src/main/java/net/tylermurphy/ken/command/main/Roles.java index 0726b11..0fc482b 100644 --- a/src/main/java/net/tylermurphy/ken/command/main/Roles.java +++ b/src/main/java/net/tylermurphy/ken/command/main/Roles.java @@ -2,7 +2,6 @@ package net.tylermurphy.ken.command.main; import net.dv8tion.jda.api.EmbedBuilder; import net.dv8tion.jda.api.entities.*; -import net.dv8tion.jda.api.interactions.components.selections.SelectMenu; import net.tylermurphy.ken.Ken; import net.tylermurphy.ken.command.Response; import net.tylermurphy.ken.command.annotation.ButtonCallback; @@ -23,13 +22,18 @@ public class Roles { return Response.error("Self roles are currently not setup in this server"); } int pages = Ken.getInstance().getDatabase().getSelfRoleData().getPages(guild.getIdLong()); - return Response.success(getEmbed(data, 1, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("roles","exit","Exit").addSelectMenu("roles","select",getRoles(data)); + return Response.success(getEmbed(data, 1, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("exit","exit","Exit").addSelectMenu("roles","select",getRoles(data)); + } + + @ButtonCallback(name="exit") + public Response onExit(Message message){ + return Response.delete(); } @ButtonCallback(name="roles") public Response onButton(Guild guild, String id, Message message){ int page; - if(message == null || id.equals("exit")) return Response.delete(); + if(message == null) return Response.delete(); if (message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) { page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5)); } else { @@ -44,7 +48,7 @@ public class Roles { if(data==null){ return Response.error("Self roles are currently not setup in this server"); } - return Response.success(getEmbed(data, page, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("roles","exit","Exit").addSelectMenu("roles","select",getRoles(data)); + return Response.success(getEmbed(data, page, pages)).addSecondaryButton("roles", "previous", "Previous").addSecondaryButton("roles", "next", "Next").addDangerButton("exit","exit","Exit").addSelectMenu("roles","select",getRoles(data)); } @SelectMenuCallback(name="roles") diff --git a/src/main/java/net/tylermurphy/ken/command/music/Queue.java b/src/main/java/net/tylermurphy/ken/command/music/Queue.java index b752985..874aa1c 100644 --- a/src/main/java/net/tylermurphy/ken/command/music/Queue.java +++ b/src/main/java/net/tylermurphy/ken/command/music/Queue.java @@ -25,7 +25,7 @@ public class Queue { GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild); MessageEmbed queue = getQueuePage(musicManager, 1); if(queue == null){ - return Response.success("Queue is empty"); + return Response.error("Queue is empty"); } return Response.success(queue).addSecondaryButton("queue", "previous", "Previous").addSecondaryButton("queue", "next", "Next"); } @@ -34,23 +34,23 @@ public class Queue { public Response onButton(String id, Message message, Guild guild){ PlayerManager playerManager = Ken.getInstance().getPlayerManager(); GuildMusicManager musicManager = playerManager.getGuildMusicManager(guild); - int page, pages; + BlockingQueue<AudioTrack> queue = musicManager.scheduler.getQueue(); + int page; + int pages = (queue.size()-1)/10+1; if (message != null && message.getEmbeds().size() > 0 && message.getEmbeds().get(0) != null) { page = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[0].substring(5)); - pages = Integer.parseInt(message.getEmbeds().get(0).getFooter().getText().split("/")[1]); } else { page = 0; - pages = (musicManager.scheduler.getQueue().size()-1)/10+1; } if(id.equals("previous")) page = page - 1 < 1 ? pages : page - 1; else page = page + 1 > pages ? 1 : page + 1; - MessageEmbed queue = getQueuePage(musicManager, page); - if(queue == null){ + MessageEmbed embed = getQueuePage(musicManager, page); + if(embed == null){ return Response.success("Queue is empty"); } - return Response.success(queue); + return Response.success(embed); } private MessageEmbed getQueuePage(GuildMusicManager musicManager, int page){ diff --git a/src/main/java/net/tylermurphy/ken/image/GifFactory.java b/src/main/java/net/tylermurphy/ken/image/GifFactory.java index f5c754b..193dc41 100644 --- a/src/main/java/net/tylermurphy/ken/image/GifFactory.java +++ b/src/main/java/net/tylermurphy/ken/image/GifFactory.java @@ -1,7 +1,7 @@ package net.tylermurphy.ken.image; import java.awt.image.BufferedImage; -import java.io.File; +import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.Iterator; @@ -19,7 +19,7 @@ import net.dv8tion.jda.api.entities.User; public class GifFactory { - public static File generateEjectGif(User u) { + public static byte[] generateEjectGif(User u) { String message; if(Math.random() > .5) message = u.getName() + " was An Impostor"; @@ -34,9 +34,8 @@ public class GifFactory { frames[i] = ImageFactory.GenerateEjectFrame(message, Math.min(i, 23), 24, space1, avatar); } - int rand = (int)(Math.random()*1000000000); try { - return generateFromBI(frames, rand+".gif", 100/12, true); + return generateFromBI(frames); } catch(Exception e) { e.printStackTrace(); return null; @@ -44,13 +43,14 @@ public class GifFactory { } - private static File generateFromBI(BufferedImage[] images, String output, int delay, boolean loop) + private static byte[] generateFromBI(BufferedImage[] images) throws IIOException, IOException { + System.out.println('e'); ImageWriter gifWriter = getWriter(); - File outfile = new File(output); - ImageOutputStream ios = ImageIO.createImageOutputStream(outfile); - IIOMetadata metadata = getMetadata(gifWriter, delay, loop); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ImageOutputStream ios = ImageIO.createImageOutputStream(baos); + IIOMetadata metadata = getMetadata(gifWriter); gifWriter.setOutput(ios); gifWriter.prepareWriteSequence(null); @@ -62,8 +62,8 @@ public class GifFactory { gifWriter.endWriteSequence(); ios.close(); - - return outfile; + System.out.println('e'); + return baos.toByteArray(); } @@ -76,7 +76,7 @@ public class GifFactory { throw new IIOException("GIF writer doesn't exist on this JVM!"); } - private static IIOMetadata getMetadata(ImageWriter writer, int delay, boolean loop) + private static IIOMetadata getMetadata(ImageWriter writer) throws IIOInvalidTreeException { ImageTypeSpecifier img_type = ImageTypeSpecifier.createFromBufferedImageType(BufferedImage.TYPE_INT_ARGB); @@ -85,12 +85,11 @@ public class GifFactory { IIOMetadataNode node_tree = (IIOMetadataNode)metadata.getAsTree(native_format); IIOMetadataNode graphics_node = getNode("GraphicControlExtension", node_tree); - graphics_node.setAttribute("delayTime", String.valueOf(delay)); + graphics_node.setAttribute("delayTime", String.valueOf(8)); graphics_node.setAttribute("disposalMethod", "none"); graphics_node.setAttribute("userInputFlag", "FALSE"); - if(loop) - makeLoopy(node_tree); + makeLoopy(node_tree); metadata.setFromTree(native_format, node_tree); @@ -104,7 +103,7 @@ public class GifFactory { app_node.setAttribute("applicationID", "NETSCAPE"); app_node.setAttribute("authenticationCode", "2.0"); - app_node.setUserObject(new byte[]{ 0x1, (byte) (0 & 0xFF), (byte) ((0 >> 8) & 0xFF)}); + app_node.setUserObject(new byte[]{ 0x1, (byte) (0), (byte) ((0) & 0xFF)}); app_extensions.appendChild(app_node); root.appendChild(app_extensions); @@ -112,7 +111,7 @@ public class GifFactory { private static IIOMetadataNode getNode(String node_name, IIOMetadataNode root) { - IIOMetadataNode node = null; + IIOMetadataNode node; for (int i = 0; i < root.getLength(); i++) { diff --git a/src/main/java/net/tylermurphy/ken/image/ImageFactory.java b/src/main/java/net/tylermurphy/ken/image/ImageFactory.java index d666fe1..e70156c 100644 --- a/src/main/java/net/tylermurphy/ken/image/ImageFactory.java +++ b/src/main/java/net/tylermurphy/ken/image/ImageFactory.java @@ -60,33 +60,12 @@ public class ImageFactory { return rotated; } - private static BufferedImage makeRoundedCorner(BufferedImage image, int cornerRadius) { - int w = image.getWidth(); - int h = image.getHeight(); - BufferedImage output = new BufferedImage(w, h, BufferedImage.TYPE_INT_ARGB); - - Graphics2D g2 = output.createGraphics(); - - g2.setComposite(AlphaComposite.Src); - g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON); - g2.setColor(Color.WHITE); - g2.fill(new RoundRectangle2D.Float(0, 0, w, h, cornerRadius, cornerRadius)); - - g2.setComposite(AlphaComposite.SrcAtop); - g2.drawImage(image, 0, 0, null); - - g2.dispose(); - - return output; - } - - public static BufferedImage getImageFromURL(String surl) { + public static BufferedImage getImageFromURL(String link) { try { - final URL url = new URL(surl); + final URL url = new URL(link); final HttpURLConnection connection = (HttpURLConnection) url.openConnection(); - connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:25.0) Gecko/20100101 Firefox/25.0"); - final BufferedImage image = ImageIO.read(connection.getInputStream()); - return image; + connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:104.0) Gecko/20100101 Firefox/104.0"); + return ImageIO.read(connection.getInputStream()); } catch (Exception e) { e.printStackTrace(); return null; |