Texture Pack Gallery


This plugin adds the ability for your players to change their texture pack in game without having to use any commands. You can create a gallery of texture packs which users are then able to apply for an optional fee


The maps above each sign are added automatically when you create the sign, the image used is the pack.png from the texture pack.

Bug Reports / Suggestions

If you find a bug, encounter a problem or have a suggestion, please fill out a ticket via the Tickets link above. I do not have the time to read through the comments section, any comment that fits the previous three categories will be ignored.

How to Create a Sign

Once you have added your texture pack with /tpg set you can use it on a sign. The name of the pack should go on line 2 and the price on line 3, note that for the price to have an effect you need to have Vault installed too. The price is optional so you can still use the plugin without Vault.


/tpg list

Used to show a list of all available texture packs, these are the names that can be used on signs.

Permission: texturepackgallery.pack.list (defaults to OP only)

/tpg set <name> <url>

Used to set a new texture pack (so that it can be used on signs). The name should not contain spaces and the URL must be the direct link to the .zip file. When you use this command the plugin will attempt to download the pack.png file for the texture pack, this means that you might not see the success message right away.

Permission: texturepackgallery.pack.set (defaults to OP only)

/tpg remove <name>

Used to remove a texture pack from the available ones, this will also disable the pack for any users that have it selected.

Permission: texturepackgallery.pack.remove (defaults to OP only)

/tpg info <name>

Used to display information on a specific texture pack, currently this only shows the link.

Permission: texturepackgallery.pack.info (defaults to OP only)

Other Permissions


Allow the player to create texture pack signs. Defaults to OP only.


Allow the player to remove texture pack signs. Defaults to OP only.


Allow the player to use texture pack signs. Defaults to everyone.


Contributions to the project are very much welcome, if you have a feature that you want implemented and know a nice way to do it then consider forking the repo and submitting a pull request. These will be accepted as long as the following simple guidelines are followed.

  • Do not edit the structure of the pom.xml file, feel free to add a dependency if you need it but the formatting and structure should not be changed.
  • If you are exposing a new API method, add a JavaDoc comment to it, but don't over-comment internal code.
  • Follow the existing code style, don't antagonise over every space though !

All dependencies that are used are now available from a public Maven repo, so you don't have to worry about building several other projects just to add a simple change any more.

Source Code

Available on GitHub.

Dev Builds

Changes Since Last Release


Development builds of this project can be acquired at the provided continuous integration server. These builds have not been approved by the BukkitDev staff. Use them at your own risk.


Download Stats

View detailed stats

You must login to post a comment. Don't have an account? Register to get one!

  • Avatar of JK82NL JK82NL Sep 16, 2013 at 03:11 UTC - 0 likes

    I am also hoping for an update.

  • Avatar of Squawkers13 Squawkers13 Aug 19, 2013 at 23:57 UTC - 0 likes

    The item frame code is broken, and it is not compatible with 1.6.2. :(

  • Avatar of KevinABC96 KevinABC96 Jun 11, 2013 at 15:18 UTC - 0 likes

    doesn´t work for me...do i have to put anything else on the sign except the tp name?

  • Avatar of lANTHONYl lANTHONYl May 19, 2013 at 17:33 UTC - 0 likes

    Yeah, the dev build on Jenkins doesn't work on 1.5.2 :/

    2013-05-19 13:30:16 [SEVERE] Could not pass event SignChangeEvent to TexturePackGallery v0.2-SNAPSHOT
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:427)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62)
            at org.bukkit.plugin.TimedRegisteredListener.callEvent(TimedRegisteredListener.java:26)
            at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:479)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:464)
            at net.minecraft.server.v1_5_R3.PlayerConnection.a(PlayerConnection.java:1382)
            at net.minecraft.server.v1_5_R3.Packet130UpdateSign.handle(SourceFile:46)
            at org.spigotmc.netty.NettyNetworkManager.b(NettyNetworkManager.java:192)
            at net.minecraft.server.v1_5_R3.PlayerConnection.d(PlayerConnection.java:109)
            at org.getspout.spout.SpoutPlayerConnection.d(SpoutPlayerConnection.java:195)
            at net.minecraft.server.v1_5_R3.ServerConnection.b(SourceFile:35)
            at org.spigotmc.MultiplexingServerConnection.b(MultiplexingServerConnection.java:72)
            at net.minecraft.server.v1_5_R3.MinecraftServer.r(MinecraftServer.java:583)
            at net.minecraft.server.v1_5_R3.DedicatedServer.r(DedicatedServer.java:227)
            at net.minecraft.server.v1_5_R3.MinecraftServer.q(MinecraftServer.java:472)
            at net.minecraft.server.v1_5_R3.MinecraftServer.run(MinecraftServer.java:404)
            at net.minecraft.server.v1_5_R3.ThreadServerApplication.run(SourceFile:573)
    Caused by: java.lang.IllegalArgumentException: Cannot spawn an entity for org.bukkit.entity.ItemFrame
            at org.bukkit.craftbukkit.v1_5_R3.CraftWorld.spawn(CraftWorld.java:1146)
            at org.bukkit.craftbukkit.v1_5_R3.CraftWorld.spawn(CraftWorld.java:916)
            at uk.co.jacekk.bukkit.texturepackgallery.TexturePackListener.onSignEdit(TexturePackListener.java:147)
            at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
            at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
            at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
            at java.lang.reflect.Method.invoke(Method.java:601)
            at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:425)
            ... 16 more
  • Avatar of Coco71 Coco71 May 10, 2013 at 10:27 UTC - 0 likes

    Nice plugin ! Thanks ! But it doesn't work on 1.5.2 :p so please, update :))))

  • Avatar of wide_load wide_load May 08, 2013 at 20:44 UTC - 0 likes

    @xghozt: Go

    Jolicraft uses an irritating method to change the download link to somethign else, the direct link is http://jolicraft.andrejolicoeur.com/download/jolicraft.zip

  • Avatar of xghozt xghozt May 07, 2013 at 22:17 UTC - 0 likes

    @wide_load: Go

    Thank you. but I have a problem I have dont /tpg set Jolicraft http://www.jolicraft.com/download/jolicraft.zip it gives a notice that it has been added in bright green

    Now when I place a sign with on the second line Jolicraft and on the third line 20 it just stays the same no painting above it or so

    when I right click it It just changes me back to dfault

    Thanks for your help

    Last edited May 07, 2013 by xghozt
  • Avatar of barnabas02 barnabas02 May 05, 2013 at 10:21 UTC - 0 likes

    Please don't include the version number in the jar file, because it prevents the use of updater plugins, such ad CraftbukkitUptodate. Thanks in advance


  • Avatar of hybridphreak85 hybridphreak85 May 05, 2013 at 04:07 UTC - 0 likes

    Nice Plugin :) Thanks


  • Avatar of wide_load wide_load May 04, 2013 at 20:33 UTC - 0 likes

    @R3tr0Sl1m3: Go

    Please leave nicer comments.


Date created
Nov 02, 2012
Last update
May 01, 2013
Development stage
GNU General Public License version 3 (GPLv3)
Curse link
Texture Pack Gallery
Recent files