package com.dsh105.holoapi.example; import com.dsh105.holoapi.api.AnimatedHologram; import com.dsh105.holoapi.api.AnimatedHologramFactory; import com.dsh105.holoapi.api.Hologram; import com.dsh105.holoapi.api.HologramFactory; import com.dsh105.holoapi.image.AnimatedImageGenerator; import com.dsh105.holoapi.image.ImageChar; import com.dsh105.holoapi.image.ImageGenerator; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.plugin.java.JavaPlugin; import java.io.File; /** * Example: * - This example adds two commands. /image and /animation * - /image will create an image hologram * - /animation will create two animated holograms * <p/> * What you will achieve by following this: * - Knowledge of how to create image holograms using both saved files and URLs * - Knowledge of how to create animated holograms from a GIF file * - Knowledge of how to create animated holograms using ImageGenerators as separate frames * - Knowledge of how to create a simple hologram with no persistence * - Knowledge of how to remove a hologram */ public class ExampleMain extends JavaPlugin { @Override public void onEnable() { } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player)) { sender.sendMessage("You can't do that!"); return true; } if (command.getName().equalsIgnoreCase("image")) { // Here a new image hologram is created from the given URL (which happens to be the HoloAPI logo) // The height has been set to 10, the char type to BLOCK and border to false // Because of the nature of this image, it's not going to look the best in-game // Selecting images that have clear colour outlines (and possibly even pixel-art) will work the best Hologram h = new HologramFactory(this) .withLocation(((Player) sender).getLocation()) .withImage(new ImageGenerator("http://dev.bukkit.org/media/images/70/44/Banner_PNG.png", 10, // A height of 10 ImageChar.BLOCK, // Char type to use false)).build(); // No extra border for this image, seeing as it is a filled image with not much transparency sender.sendMessage("You created an image hologram at " + h.getDefaultX() + ", " + h.getDefaultY() + ", " + h.getDefaultZ() + "!"); return true; } else if (command.getName().equalsIgnoreCase("animation")) { // Animated holograms from GIFs are slightly different // If you haven't seen the tutorial on text animations, it is recommended you check that out first // We'll go over two ways of creating images here // In this example, we're pretending there's a GIF file located at `plugins/MyPlugin/mygif.gif` AnimatedHologram h = new AnimatedHologramFactory(this) .withLocation(((Player) sender).getLocation()) .withImage(new AnimatedImageGenerator(new File(this.getDataFolder() + File.separator + "mygif.gif"), 5, 10, ImageChar.BLOCK, false)) .build(); // This will overlap the one above. For the purpose of this tutorial, that doesn't matter // The ImageGenerator above can be used to create the frames of AnimatedHolograms // This hologram has three different frames created from different PNG images // From what we did above, you should be able to figure out what's going on here :) AnimatedHologram h2 = new AnimatedHologramFactory(this) .withLocation(((Player) sender).getLocation()) .withImage(new AnimatedImageGenerator(5, new ImageGenerator(new File(this.getDataFolder() + File.separator + "firstframe.png"), 10, ImageChar.BLOCK, false), new ImageGenerator(new File(this.getDataFolder() + File.separator + "secondframe.png"), 10, ImageChar.BLOCK, false), new ImageGenerator(new File(this.getDataFolder() + File.separator + "thirdframe.png"), 10, ImageChar.BLOCK, false))) .build(); sender.sendMessage("You created two animated holograms! Well done!"); return true; } return false; } }