Allow other image urls

This commit is contained in:
Jesse Boyd 2017-05-13 14:43:15 +10:00
parent acca995aa5
commit 59ab56bdd7
No known key found for this signature in database
GPG Key ID: 59F1DE6293AF6E1F
1 changed files with 14 additions and 22 deletions

View File

@ -87,13 +87,8 @@ public class CreateFromImage extends Command {
final BufferedImage image; final BufferedImage image;
if (argList.get(0).toLowerCase().startsWith("http")) { if (argList.get(0).toLowerCase().startsWith("http")) {
try { try {
URL url = new URL(argList.get(0));
if (!url.getHost().equals("i.imgur.com")) {
player.sendMessage("Images can only be loaded from i.imgur.com");
return;
}
player.sendMessage(BBC.getPrefix() + "Loading image... (1)"); player.sendMessage(BBC.getPrefix() + "Loading image... (1)");
image = com.boydti.fawe.util.MainUtil.toRGB(ImageIO.read(url)); image = getImage(argList.get(0), fp);
} catch (IOException e) { } catch (IOException e) {
player.sendMessage(e.getMessage()); player.sendMessage(e.getMessage());
return; return;
@ -201,7 +196,7 @@ public class CreateFromImage extends Command {
int argOffset = 0; int argOffset = 0;
BufferedImage img = null; BufferedImage img = null;
if (argList.get(1).startsWith("http")) { if (argList.get(1).startsWith("http")) {
img = getImgurImage(argList.get(1), fp); img = getImage(argList.get(1), fp);
argOffset++; argOffset++;
} }
World world = fp.getWorld(); World world = fp.getWorld();
@ -299,7 +294,7 @@ public class CreateFromImage extends Command {
C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>"); C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>");
return; return;
} }
BufferedImage image = getImgurImage(argList.get(1), fp); BufferedImage image = getImage(argList.get(1), fp);
generator.setColor(image); generator.setColor(image);
player.sendMessage("Set color, what's next?"); player.sendMessage("Set color, what's next?");
return; return;
@ -310,7 +305,7 @@ public class CreateFromImage extends Command {
C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>"); C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>");
return; return;
} }
BufferedImage image = getImgurImage(argList.get(1), fp); BufferedImage image = getImage(argList.get(1), fp);
generator.setBiomeColor(image); generator.setBiomeColor(image);
player.sendMessage("Set color, what's next?"); player.sendMessage("Set color, what's next?");
return; return;
@ -321,7 +316,7 @@ public class CreateFromImage extends Command {
C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>"); C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>");
return; return;
} }
BufferedImage image = getImgurImage(argList.get(1), fp); BufferedImage image = getImage(argList.get(1), fp);
generator.setBlockAndBiomeColor(image); generator.setBlockAndBiomeColor(image);
player.sendMessage("Set color, what's next?"); player.sendMessage("Set color, what's next?");
return; return;
@ -333,7 +328,7 @@ public class CreateFromImage extends Command {
C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>"); C.COMMAND_SYNTAX.send(player, "/2 cfi " + argList.get(0) + " <url>");
return; return;
} }
BufferedImage image = getImgurImage(argList.get(1), fp); BufferedImage image = getImage(argList.get(1), fp);
generator.setColorWithGlass(image); generator.setColorWithGlass(image);
player.sendMessage("Set glass color, what's next?"); player.sendMessage("Set glass color, what's next?");
return; return;
@ -370,7 +365,7 @@ public class CreateFromImage extends Command {
} }
if (argList.get(1).startsWith("http")) { if (argList.get(1).startsWith("http")) {
player.sendMessage("Loading image (3)..."); player.sendMessage("Loading image (3)...");
BufferedImage image = getImgurImage(argList.get(1), fp); BufferedImage image = getImage(argList.get(1), fp);
generator.setHeight(image); generator.setHeight(image);
} else { } else {
generator.setHeights(Integer.parseInt(args[1])); generator.setHeights(Integer.parseInt(args[1]));
@ -424,7 +419,7 @@ public class CreateFromImage extends Command {
generator.setBiome(id); generator.setBiome(id);
} else { } else {
id = getBiome(argList.get(2), fp).getId(); id = getBiome(argList.get(2), fp).getId();
BufferedImage img = getImgurImage(argList.get(1), fp); BufferedImage img = getImage(argList.get(1), fp);
if (img != null) { if (img != null) {
boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3)); boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3));
generator.setBiome(img, (byte) id, whiteOnly); generator.setBiome(img, (byte) id, whiteOnly);
@ -443,7 +438,7 @@ public class CreateFromImage extends Command {
} }
int radius = Integer.parseInt(argList.get(2)); int radius = Integer.parseInt(argList.get(2));
int iterations = Integer.parseInt(argList.get(3)); int iterations = Integer.parseInt(argList.get(3));
BufferedImage img = getImgurImage(argList.get(1), fp); BufferedImage img = getImage(argList.get(1), fp);
if (img != null) { if (img != null) {
boolean whiteOnly = argList.size() == 5 && Boolean.parseBoolean(argList.get(4)); boolean whiteOnly = argList.size() == 5 && Boolean.parseBoolean(argList.get(4));
generator.smooth(img, whiteOnly, radius, iterations); generator.smooth(img, whiteOnly, radius, iterations);
@ -466,7 +461,7 @@ public class CreateFromImage extends Command {
generator.setOverlay(id); generator.setOverlay(id);
} else { } else {
id = we.getPatternFactory().parseFromInput(argList.get(2), context); id = we.getPatternFactory().parseFromInput(argList.get(2), context);
BufferedImage img = getImgurImage(argList.get(1), fp); BufferedImage img = getImage(argList.get(1), fp);
if (img != null) { if (img != null) {
boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3)); boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3));
generator.setOverlay(img, id, whiteOnly); generator.setOverlay(img, id, whiteOnly);
@ -489,7 +484,7 @@ public class CreateFromImage extends Command {
generator.setMain(id); generator.setMain(id);
} else { } else {
id = we.getPatternFactory().parseFromInput(argList.get(2), context); id = we.getPatternFactory().parseFromInput(argList.get(2), context);
BufferedImage img = getImgurImage(argList.get(1), fp); BufferedImage img = getImage(argList.get(1), fp);
if (img != null) { if (img != null) {
boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3)); boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3));
generator.setMain(img, id, whiteOnly); generator.setMain(img, id, whiteOnly);
@ -512,7 +507,7 @@ public class CreateFromImage extends Command {
generator.setFloor(id); generator.setFloor(id);
} else { } else {
id = we.getPatternFactory().parseFromInput(argList.get(2), context); id = we.getPatternFactory().parseFromInput(argList.get(2), context);
BufferedImage img = getImgurImage(argList.get(1), fp); BufferedImage img = getImage(argList.get(1), fp);
if (img != null) { if (img != null) {
boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3)); boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3));
generator.setFloor(img, id, whiteOnly); generator.setFloor(img, id, whiteOnly);
@ -535,7 +530,7 @@ public class CreateFromImage extends Command {
generator.setColumn(id); generator.setColumn(id);
} else { } else {
id = we.getPatternFactory().parseFromInput(argList.get(2), context); id = we.getPatternFactory().parseFromInput(argList.get(2), context);
BufferedImage img = getImgurImage(argList.get(1), fp); BufferedImage img = getImage(argList.get(1), fp);
if (img != null) { if (img != null) {
boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3)); boolean whiteOnly = argList.size() == 4 && Boolean.parseBoolean(argList.get(3));
generator.setColumn(img, id, whiteOnly); generator.setColumn(img, id, whiteOnly);
@ -602,12 +597,9 @@ public class CreateFromImage extends Command {
return Biomes.findBiomeByName(knownBiomes, arg, biomeRegistry); return Biomes.findBiomeByName(knownBiomes, arg, biomeRegistry);
} }
private BufferedImage getImgurImage(String arg, FawePlayer fp) throws IOException { private BufferedImage getImage(String arg, FawePlayer fp) throws IOException {
if (arg.startsWith("http")) { if (arg.startsWith("http")) {
URL url = new URL(arg); URL url = new URL(arg);
if (!url.getHost().equalsIgnoreCase("i.imgur.com")) {
throw new IOException("Only i.imgur.com links are allowed!");
}
fp.sendMessage(BBC.getPrefix() + "Downloading image... (3)"); fp.sendMessage(BBC.getPrefix() + "Downloading image... (3)");
return com.boydti.fawe.util.MainUtil.toRGB(ImageIO.read(url)); return com.boydti.fawe.util.MainUtil.toRGB(ImageIO.read(url));
} }