TexturePackMenu
Download Latest Release
Source available on GitHub (open source, pull requests accepted)
View Changelog
IMPORTANT NOTE: Spout is required and this will only work for players using the Spoutcraft client.
Description
This plugin will override the player's normally chosen texture pack while they are on your server. They will be set to a default texture pack of your choice when they first connect, after which they can choose from a list of available texture packs you have selected. After they choose a different texture pack from your list, their choice will be remembered on subsequent logins.
This will allow you to prevent players from using transparent texture packs to cheat (finding ores and hidden chests easily), and allow players to switch between popular texture packs without leaving the server.
Command
/texture - show the texture pack selection menu. In-game players only.
/texture reload - reload the texture pack list from config.yml.
/texture reset <player> - reset the texture pack for the specified player to the server default. This can be useful if a player selects a texture pack which is larger than their allocated memory can handle.
Permissions
These are "superperms" (built-in Bukkit) permissions, so older Permissions plugins will not be able to affect them.
texturepackmenu.texture (granted by default) - allows the use of the /texture command. Since it is granted by default to all players, if you don't want certain players to be able to use it, you will need to revoke the permission.
texturepackmenu.reload (default Ops and server console only) - allows use of the /texture reload command.
texturepackmenu.reset (default Ops and server console only) - allows use of the /texture reset <player> command.
Setup Info
To require that players use the Spoutcraft client on your server, you can set this option in Spout's config.yml file:
ForceSinglePlayerClient: true
You will need to edit the default config.yml for this plugin to contain a list of texture pack names and download URLs that you have chosen. Editing the file should be pretty straightforward, as it is formatted for ease of modification. You can see the default config.yml file here.
It is even possible to allow players to keep their own texture pack by default (instead of overriding it) and essentially just use the plugin to showcase other texture packs.
If you appreciate this plugin, you are welcome to .
Thanks to the following people who have been gracious enough to donate: Jeremie Swartz
@Brettflan
I tested the 1.0.9 dev version you linked and it seems to mitigate the server side lag.
I think you misunderstood what i was saying about re-initializing the packs on player join though. Yes, the packs are stored locally and are not dowloaded each time the player joins. But what is happening is that the packs are loaded on player join, even if the server required pack is already loaded on the client. I have the server required texture pack as my client default. It is loaded when i launch spoutcraft. When i join my server, it is reloaded... despite the fact that it was already loaded before i joined the server. This causes a momentary client side freeze while the texture pack is loaded... every time a play joins.
@lANTHONYl
As I've explained to others several times before here in the comment section, Spout should be handling running an MD5 checksum on the texture packs the player already has downloaded and using them without having to redownload them if the checksum matches. If that's not working, it's on Spout.
As for it causing server lag... it might be possible to smooth that out by running it in a separate async thread. If you're willing to be a guinea pig, try this out and let me know if it helps:
http://wimbli.com/minecraft/TPM_1.0.9_dev.zip
it's a 128HD so yeah... it's 76MB, but why would that cause any server side lag? The packs are stored locally after the client initially grabs them from dropbox.
Also, I noticed that even if the required pack is initialized before the player joins, the plugin re-initializes it on join. I, for example, have the required texture pack as my client default. Couldn't there just be an authentication check to make sure each client is using it instead of forcing the pack to re-load?
@lANTHONYl
Do you have a really large default texture pack, or has the player in question selected a really large texture pack?
When using this plugin, every time a player joins, the server issues this warning in console:
This is in spite of the java process itself only using 3-4% CPU while someone logs in.
Sorry, I saw the relationships side. Never-mind.
[U]Does Spout just support this, or is it required?[/U]
Sorry, I saw the relationships side. Never-mind.
Does Spout just support this, or is it required?
@Brettflan
He says to just turn off spout support on dynmap. i'll try that latter and see if it works.
@EMOberger
DynMap is triggering the problem, and I'm not even sure how it is doing so. Combine that with me having little free time and very little interest in spending what little free time I have on investigating a problem caused by another plugin... sorry. As I said below you should take it up with mikeprimm as to what DynMap is doing there.
@Brettflan
Could you find a fix? I kinda need dynmap xD
See this comment below:
http://dev.bukkit.org/server-mods/texturepackmenu/?comment=99
DynMap is doing something strange there which is triggering the error.
@Brettflan
2012-09-17 14:17:35 [INFO] [TexturePackMenu] Enabling TexturePackMenu v1.0.8
2012-09-17 14:17:35 [SEVERE] Error occurred while enabling TexturePackMenu v1.0.8 (Is it up to date?)
java.lang.NullPointerException
at com.wimbli.TexturePackMenu.TexturePackMenu.onEnable(TexturePackMenu.java:19)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:374)
at org.dynmap.bukkit.SpoutPluginBlocks.processSpoutBlocks(SpoutPluginBlocks.java:82)
at org.dynmap.bukkit.DynmapPlugin$BukkitEnableCoreCallback.configurationLoaded(DynmapPlugin.java:112)
at org.dynmap.DynmapCore.enableCore(DynmapCore.java:277)
at org.dynmap.bukkit.DynmapPlugin.onEnable(DynmapPlugin.java:619)
at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:217)
at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:374)
at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:381)
at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:283)
at org.bukkit.craftbukkit.CraftServer.enablePlugins(CraftServer.java:265)
at net.minecraft.server.MinecraftServer.i(MinecraftServer.java:297)
at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:276)
at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:226)
at net.minecraft.server.DedicatedServer.init(DedicatedServer.java:140)
at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:377)
at net.minecraft.server.ThreadServerApplication.run(SourceFile:539)
@EMOberger
Not needed, apparently. If you have any problems, please report them.
Can you update this for 1.3+
Last I tested it, yes. Is it that difficult for you to try it out yourself?
Is this still working? Help pls!
Is this working with 1.3+?
@vatofrog
If you're having any problems running it, please provide some info.
plz update it i need this plugin!