AnimatedFrames 4.12.1-SNAPSHOT

Animated images on item frames!

  1. inventivetalent
    Tested Minecraft Versions:
    • 1.8
    • 1.9
    • 1.10
    • 1.11
    • 1.12
    • 1.13
    • 1.14
    • 1.15
    • 1.16
    Source Code:
    https://github.com/InventivetalentDev/AnimatedFrames
    Languages Supported:
    Custom
    AnimatedFrames allows you to play animations on item frames!




    If you find this plugin useful, feel free to throw over a donation :)




    Depends on PacketListenerAPI & MapManager

    Commands
    • /afhelp - Get a list of the commands below
    • /afcreate <Name> <Image> - Creates a new image with the specified name
    • /afremove <Name> - Removes the specified image
    • /aflist - Get a list of already created images
    • /afplace - Command to place down multiple item frames for you
    • /afpause - pauses a running frame
    • /afstop - stops a running frame (same as pause, but resets to first image of the animation)
    • /afplay - starts/resumes a stopped/paused frame


    Permissions
    • animatedframes.create - Permission to create images
    • animatedframes.remove - Permission to remove images
    • animatedframes.list - Permission to list images
    • animatedframes.pause - Permission to pause frames
    • animatedframes.stop - Permission to stop frames
    • animatedframes.play - Permission to play frames

    Config
    Code (YAML):

    # Make sure all animations are started at the same time on startup (useful if you usethe same image on multiple frames)
    synchronizedStart
    : false

    # Enable this to not start any frames automatically on server start & if you'd like to start them manually instead
    doNotStartAutomatically
    : false

    # This is a (slightly hacky) fix for images which Java interpretes as the wrong image type
    # You should enable this if you get this error when creating a image: "java.lang.IllegalArgumentException: Unknown image type 0"
    fixImageTypes
    : false

    # Maximum distance for frames to be animated to players
    # Note: Increasing this only has an effect if your server's rendering distance for entities is also increased (i.e. spigot.yml entity-tracking-range)
    maxAnimateDistance
    : 32

    # (ms) Default delay for GIFs with missing delay information (Time for each frame to be displayed)
    defaultDelay
    : 50

    message
    :
      command
    :
        create
    :
          setup
    :
            first
    : "&ePlease right-click the &abottom-left corner &eof the frame"
            second
    : "&ePlease right-click the &atop-right corner &eof the frame"
            set
    :
              first
    : "&aFirst corner set"
              second
    : "&aSecond corner set"
            complete
    : "&aSetup complete! &eCreating frame '%s' with image '%s'..."
            loading
    : "&7Loading image & generating maps..."
            saving
    : "&7Saving frame data to file..."
            starting
    : "&7Starting playback... (This might take a while - See console for progress)"
            started
    : "&aAnimation started!"
          error
    :
            exists
    : "&cFrame already exists"
            invalidImage
    : "&cInvalid image path specified"
            unknownType
    : "&cCould not identify the image type. Please make sure you are using the correct link. (Generating anyway, check console for errors)"
        delete
    :
          stopping
    : "&eStopping animation..."
          removed
    : "&aFrame removed."
          error
    :
            notFound
    : "&cFrame not found"
        start
    :
          starting
    : "&eStarting animation..."
          error
    :
            notFound
    : "&cFrame not found"
            playing
    : "&cFrame is already playing"
        stop
    :
          stopping
    : "&Stopping animation..."
          error
    :
            notFound
    : "&cFrame not found"
            notPlaying
    : "&cFrame is not playing"
        pause
    :
          pausing
    : "&ePausing animation..."
          error
    :
            notFound
    : "&cFrame not found"
            notPlaying
    : "&cFrame is not playing"
        next
    :
          success
    : "&eSkipped to next frame"
          error
    :
            notFound
    : "&cFrame not found"
            notPause
    : "&cFrame is not paused"
        previous
    :
          success
    : "&eSkipped to previous frame"
          error
    :
            notFound
    : "&cFrame not found"
            notPause
    : "&cFrame is not paused"
        click
    :
          setup
    :
            first
    : "&ePlease right-click the &abottom-left corner &eof the frame"
            second
    : "&ePlease right-click the &atop-right corner &eof the frame"
            set
    :
              first
    : "&aFirst corner set"
              second
    : "&aSecond corner set"
            complete
    : "&aAdded click event %s"
          remove
    : "&ePlease click inside the action you want to remove"
          removed
    : "&eAction removed"
          error
    :
            notFound
    : "&cFrame not found"
        place
    :
          first
    : "&ePlease right-click the &abottom-left&e block"
          second
    : "&ePlease right-click the &atop-right&e block"
          set
    :
            first
    : "&aFirst corner set"
            second
    : "&aSecond corner set"
          done
    : "&aFrames placed!"
          error
    :
            face
    : "&cFirst clicked side does not match the second side"
     

    [​IMG]


    Tutorials

    ServerMiner



    Note: The tutorials below use commands from an older version. Please use the similar commands listed above.


    (German)

    How to create a screen
    1. Place down blocks to hold your item frames
    2. Place down the item frames you want to use for the image
    3. Upload an animation or image (.GIF | .PNG) or find one online. It should be rectangular or it will be stretched. Note: Due to a bug in some Java versions, JPEG images might not look like the original image
      1. For local image files, just specify the full file path (e.g. C:\\Users\\Me\\myImage.png)
    4. Run the create command above with a custom name and the url to the image. You can also specify the path to a local file.
      1. Use shorteners like bitly if the link to your image is too long.
    5. Follow the instructions you get in the chat:
      1. Right click the bottom-left item frame and wait
      2. Right click the top-right item frame and wait for your image to load

    Note: For GIPHY images, replace the 'media.giphy.com' domain with 'i.giphy.com'

    How to remove a screen
    To remove a screen, run the remove command and specify the name


    How it works - No lags
    This plugin does not cause the expected lag/framerate issues you would expect.
    It doesn't update the picture every frame (doing that would cause a lot of frame rate issues), it only updates the map item contained in the item frame.
    The actual frames of the animation are only sent once with a little delay to prevent any lag issues.



    Links


    Please leave a rating if you like this resource.
    Donations to support me or this resource are also very much appreciated.

Recent Updates

  1. 1.16.4 support
  2. 1.16 support
  3. Config update

Recent Reviews

  1. mohteshamjibran
    mohteshamjibran
    5/5,
    Version: 4.12.1-SNAPSHOT
    Amazing content as always!
    Keep up the good work for this community Mr. Dev!

    Sincerely,
    Veltabex
  2. Carl0Jonshon
    Carl0Jonshon
    1/5,
    Version: 4.12.1-SNAPSHOT
    [11:49:56 ERROR]: null
    org.bukkit.command.CommandException: Unhandled exception executing 'afcreate 1 1\' in org.inventivetalent.pluginannotations.command.AnnotatedCommand$BukkitCommand(framecreate)
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:169) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at org.bukkit.craftbukkit.v1_16_R3.CraftServer.dispatchCommand(CraftServer.java:802) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.PlayerConnection.handleCommand(PlayerConnection.java:2032) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.PlayerConnection.c(PlayerConnection.java:1843) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1796) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:47) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.PacketPlayInChat.a(PacketPlayInChat.java:5) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.PlayerConnectionUtils.lambda$ensureMainThread$1(PlayerConnectionUtils.java:43) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.TickTask.run(SourceFile:18) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeTask(IAsyncTaskHandler.java:151) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandlerReentrant.executeTask(SourceFile:23) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.executeNext(IAsyncTaskHandler.java:114) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.MinecraftServer.bb(MinecraftServer.java:1205) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.MinecraftServer.executeNext(MinecraftServer.java:1198) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.IAsyncTaskHandler.awaitTasks(IAsyncTaskHandler.java:125) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.MinecraftServer.sleepForTick(MinecraftServer.java:1174) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:1018) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:179) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at java.lang.Thread.run(Thread.java:748) [?:1.8.0_275]
    Caused by: org.inventivetalent.pluginannotations.command.exception.UnhandledCommandException: Unhandled exception in [email protected]#frameCreate
    at org.inventivetalent.pluginannotations.command.AnnotatedCommand.onCommand(AnnotatedCommand.java:169) ~[?:?]
    at org.inventivetalent.pluginannotations.command.AnnotatedCommand$BukkitCommand.execute(AnnotatedCommand.java:401) ~[?:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    ... 18 more
    Caused by: java.lang.IllegalStateException: zip file closed
    at java.util.zip.ZipFile.ensureOpen(ZipFile.java:686) ~[?:1.8.0_275]
    at java.util.zip.ZipFile.getEntry(ZipFile.java:315) ~[?:1.8.0_275]
    at java.util.jar.JarFile.getEntry(JarFile.java:240) ~[?:1.8.0_275]
    at java.util.jar.JarFile.getJarEntry(JarFile.java:223) ~[?:1.8.0_275]
    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:133) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at org.bukkit.plugin.java.JavaPluginLoader.getClassByName(JavaPluginLoader.java:216) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:111) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at org.bukkit.plugin.java.PluginClassLoader.findClass(PluginClassLoader.java:100) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_275]
    at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_275]
    at org.inventivetalent.pluginannotations.command.AnnotatedCommand.onCommand(AnnotatedCommand.java:134) ~[?:?]
    at org.inventivetalent.pluginannotations.command.AnnotatedCommand$BukkitCommand.execute(AnnotatedCommand.java:401) ~[?:?]
    at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:159) ~[patched_1.16.4.jar:git-Yatopia-"37e61be"]
    ... 18 more
  3. tryit163281
    tryit163281
    5/5,
    Version: 4.12.1-SNAPSHOT
    hello bro, I think it's a good plugin for us. I like it all. But I have a question. Can I copy the object that is used by animatedframe? Just like i build the object in world A and I want to copy that to world B. How should I do?
  4. MAGd_
    MAGd_
    5/5,
    Version: 4.12.1-SNAPSHOT
    amazing plugin
    -----------------------------------------------------------------
  5. daonlee
    daonlee
    5/5,
    Version: 4.12.0-SNAPSHOT
    Good plugin, but not working with 1.16.4! Is there a problem? This is a very needed plugin for me! Update to 1.16.4. Thank you:)
  6. PluginDownloader
    PluginDownloader
    2/5,
    Version: 4.12.0-SNAPSHOT
    tried running on spigot 1.16.2 and paper 1.16.2 and it literally spammed errors... please fix this
  7. LukaPix
    LukaPix
    2/5,
    Version: 4.12.0-SNAPSHOT
    "Tested MC Versions 1.16"
    - throws errors when running on PaperMC 1.15 or higher.
  8. Mathayus_X
    Mathayus_X
    4/5,
    Version: 4.12.0-SNAPSHOT
    Good plugin.
    But how can I increase the map limit?
    I don't find any setting for.
  9. RakutenZetsu
    RakutenZetsu
    5/5,
    Version: 4.12.0-SNAPSHOT
    Brilliant! it works with my own banners, all be it a little slow to load but it definitely works! I'm running paper 1.15.2 (play.rakutenzetsu.net)
  10. Noplix
    Noplix
    5/5,
    Version: 4.11.5-SNAPSHOT
    Great plugin, used it a lot on 1.14 but right now it's unusable on 1.16 :/
    Hope this is going to be update soonish <3!