If you see something that you would like to be made and put in here, feel free to suggest it . I may work on making this more colorful/appealing, but for now I'm more driven towards functionality/ease of use.
To begin, select the type of problem you are having:
My issue is related to...
Network Issues (This includes Is hosting a minecraft server safe?)
Startup scripts and jvm flags
How Many Players Can I Hold
How Do I Use the Server Texture
Where do I download bukkit?
How do I install bukkit?
Why can't I make bukkit run?
My startup script isn't working!
Error: Cannon locate jarfile 'craftbukkit.jar'
java is not recognized as an internal or external command?
Once downloaded, rename it to craftbukkit.jar (just craftbukkit if you don't see .jar at the end already). Delete your old craftbukkit.jar file, and replace it with this one.
If you have an online host, then you're done with this part. If you homehost, read on:
For the sake of startup scripts, I'm going to do this now. The ones that I personally recommend you use are here:
@ECHO OFF SET BINDIR=%~dp0 CD /D "%BINDIR%" java -Xincgc -Xmx1G -server -jar craftbukkit.jar PAUSEFor linux:
#!/bin/sh screen -dmS mc java -server -Xms2000M -Xmx2000M -XX:+DisableExplicitGC -jar craftbukkit.jar(assuming linux users understand the JVM a bit more, I added a GC flag)
You copy this into a text editting program (Like window's notepad or linux's Vim), and save them as either a .bat file or a .sh file, respectively.
Always have your server named craftbukkit.jar when using this, and within the same folder, and it will always work.
You can change the "-Xmx1G" to whatever you need for space. For instance, two gigabytes would be "-Xmx2G", and 512megabytes would be "-Xmx512M".
To access your server console via linux command line with this script, use "screen -r".
What plugins should I use?
Now for personal suggestions. Overall, this is a rather picky issue, I would personally use these if you are just starting out:
WorldGuard (Requires WorldEdit)
You can swap out Essentials with CommandBook if you want a better but not as common experience.
As far as the "best" plugins, there are many different types, of which you can't exactly distinguish as "best". But I will give the lists of some basic ones, and describe them as best I can briefly.
bPermissions - Easiest for new users
TotalPermissions - A new permissions plugin being developed by Lord_Ralex and myself.
Privileges- Simplistic and fastest permissions plugin. Not as popular, but a recommend
PermissionsBukkit - Has some hooks with things like McMyAdmin
GroupManager - Has some pre-made configs, but I personally dislike this.
PermissionsEx - Most versatile, most buggy and easily breaks
Essentials - the most used, simplest to handle
CommandBook - much more lightweight alternative
AdminCMD - a newly made one, has a few nice features
jCommands - not the biggest or well known, but is under dev and holds the most basic needs
LogBlock - I personally use it now. It is simple and gets the job done.
Hawkeye - Another popular choice, has a couple extra kicks.
SWatchDog - One of the few logging plugins made with Tekkit in mind.
CoreProtect - Another rarity, this plugin can log blocks without the use of MySQL. However, using MySQL is a benefit in the first place, so I would not recommend using it. It is great if you are a smaller server however.
Anti-Cheating or Anti-Hacking:
Nocheat - Evanprime's original anticheating plugin, now discontinued. (Link removed, as most things bypass it now).
NoCheat+ - An up-to-date continuation of the original NoCheat
AntiCheat- An under development plugin by the essentials team.
STAB - Also registers multiple IPs
SpamGuard - Another popular choice, protects against various things like CAPS, repeated messages/commands, and gives warnings.
Global Banning Systems:
Many global banning systems are very disliked by people, due to the fact of a repeated history where server owners will either ban due to previous bans, or not allow players to join because of it. This is not the way I personally recommend you use the tool. In all honesty, you should be using these plugins as a reference, and as a banning tool. You should never judge a person's level of punishment based on a previous ban, but rather on what they have done specifically to you. So with that said, onto the plugins...
McBans - The most popular by far, has the largest database.
McBouncer - A nice McBans alternative, with a good web gui.
Glizer - Second most popular. Not nearly as many rumors/shortcomings from this as McBans.
MineBans - Smaller banlist,
All of these can be referenced at once via this Lookup tool, or by the Fishbans checker plugin.
Xray-Informer - Works in correlation with Logblock, queries your data tables to find mining ratios.
Orebfuscator - One of the most rigorous methods, masks the ore from clients. However, it will be resource intensive unless properly tweaked.
I'm using permissionsEx, and my prefixes don't work!
Why won't my prefixes work?
How come there aren't any prefixes showing up in game, when I put them in file?
It goes in info feilds, i.e.:
info: prefix: '&amp;4[Prefix] &amp;f' suffix: '&amp;9'Would look like:
<[Prefix] Playername> Random Text Blarb
If using PermissionsEx:
It is places within their own feilds, i.e.:
prefix: '&amp;4[Prefix] &amp;f' suffix: '&amp;9'Would look like:
<[Prefix] Playername> Random Text Blarb
If you are using PermissionsEx, you enable the plugin ChatManager after installing them. If you open the files "config.yml" in their respective folders, they'll each have the line:
enable: falseWhich you must change to true.
If using bPermissions:
It goes in meta feilds, i.e.:
meta: prefix: '&amp;4[Prefix] &amp;f' suffix: '&amp;9'Would look like:
<[Prefix] Playername> Random Text Blarb
PermissionsBukkit does not natively support prefixes. To do this, you must use a prefixing plugin, such as mChatSuite or herochat
My port won't forward!!
How do I port forward?
Port 25565 will not open
I forwarded my port, but still cannot play?
What IP address do I connect with?
What IP do I give to others?
Error! Failed to bind to port?!
Is hosting a server safe?
For your router:
Easiest way to do this (port forwarding), hit the start menu, and search for "CMD" (terminal for linux, I'm assuming you know this. If you need a bit of help on this stage in linux, go to "Your IP, and which ones to use"). In that, you type "ipconfig", and find these two lines:
IPv4 Address: . . . . . . . . . 192.168.2.7 Default Gateway: . . . . . . . . 192.168.2.1
The numbers will be different, but keep track of them. You will access your router using the "default gateway" address in your browser, and try searching on the internet for your router model's default password (or, take a chance at one you normally use). From there, find something that has words along the lines "Port forwarding", and you fill in the feilds with the following information:
IPv4 address (192.168.2.7, in our example)
That would essentially be all you have to do to port forward. Keep in mind if your router also has a firewall, this also needs to allow through port 25565, or be disabled in general.
For a computer firewall:
To be done.
Your IP, and which ones to use:
There are three different types. These are local, external, and loopback.
Loopback is like "127.0.0.1" or "localhost", which will connect to a server located directly on your computer. This is the same on all computers
Local (usually listed under IPv4 or IPv6 within network configurations) is a server within your own household on a different computer, usually begins with either "192.168" or "10.0". This can be found in your terminal/command line usually using the "ipconfig" command (or "ifconfig" on a Linux OS).
External is anything outside of your home, and can be a large variety of IP addresses. If it is hosted within your household, many routers will have issue with you connecting to this. This can be found at http://whatsmyip.org
You will want to have other people use the external, while you will being using either your local or loopback
For failed to bind to port issue:
**** FAILED TO BIND TO PORT! The exception was: java.net.BindException: Cannot assign requested address: JVM_Bind Perhaps a server is already running on that port?
Chances are, if you are seeing this error, there are one of three things happening. First of all, if you are home-hosting, make absolutely sure that you have left this feild in the server.properties file blank:
server-ip=If that does not already fix your problem, then either restart your computer (or, if you are able to, terminate all instances of "javaw.exe").
Usually, by this point, if you are unable to connect in that way, then something else is likely taking up the port. Try changing the port number in the file and seeing if any more errors ensue.
Is hosting a minecraft server safe?
Another thing to note, using port forwarding to host your minecraft server is safe. Should you of been using hamachi in the past, then you have already taken much more of a risk then than you are now. Hamachi is the same as using a computer on the same wireless internet as someone. Browsing webpages is even more unsafe than hosting your own server, as you give out more information just by connecting to a webpage (like Operating System, IP address, browser type) than opening a single port on your firewall/router that will be taken up by a minecraft server. Lastly, by running the server and having everything directed correctly, any incoming traffic on your minecraft port will only be directed to the minecraft server. Should it be offline, the port is considered <CLOSED>
In a very brief statement, you are more unsafe browsing random pages and google than you are hosting a minecraft server.
A bit more technical info on the firewall (it's good to read anyhow):
Now then, what most people don't realize is that while the packets are still allowed through, that does NOT mean that they are unmonitored. Allow me to explain how this works:
This is essentially the makeup of a network packet. They have a designation IP, which obviously is sent to you. Your forwarded port on your router then sends them to the machine hosting your server, and your firewall directs them to your server. The firewall looks at incoming packets, and if they are to be directed through the minecraft port (usually 25565), then they will be headed straight to the minecraft server that you are running. From that point, all info directed to xx.xxx.xx.x:25565 is processed through your server. If you run your server for most of the day, then you are more safe than leaving it offline. Also, if your server IP is not advertised, and only given out to friends, you are even MORE safe than posting it. And yet again, if you ever set up a packet sniffer (for that extra paranoid monitoring), you can even monitor the information sent to the minecraft server, as well as the messages makeup. Should you do this, keep in mind the amount of info a packet contains is fairly simple, such as a data value or a command.
Check if others can connect:
With your server running, go to http://canyouseeme.org and type in the port number you use for the server. Just for emphasis, you must make sure your server is running when you check with this. If it returns closed, then it is either an issue with your router or firewall, which you can look at the sections above for.
During port-forwarding, you may find that after all that work, people still cannot reach your server. Now, before you start assuming that it is all right, and that it is not your fault, there is a list of things you can do to help fix it, and to help give us if you still cannot get it solved.
1) Determine which device on the network is causing the issue.
There is a simple test to do this. You can either use the computer hosting the server, or a second computer on the same network (aka connected to the same router). In Minecraft, use the server's internal IP, the one that you had used during port-forwarding. This test allows you to determine if the router or the computer hosting is at fault as when you use the local IP, the router's port forwarding is not used at all, so any issues with connections to the server means that the computer hosting has an issue.
- If the local IP does not work:
Check the computer's firewalls. If you have anti-virus software, make sure that the firewalls in it allow for the port 25565 (or whatever port you are using) to allow connections. If you have a Windows machine, make sure that Java is allowed and that port 25565 is allowed as well. If you really wanted to see if they were at fault, you can disable all your firewalls and test, and if that does allow it, then you just have to configure them to allow the server. I do not recommend leaving your firewalls off completely unless you are testing something as that is not a safe idea.
- If the local IP does work:
Check your router and see if it has any firewalls. Make sure they allow the port and also make sure your port-forwarding is correct.
Startup scripts and JVM flags
What should I use to start my server?
What flags can I start my server with?
How can I optimize my minecraft server?
What are JVM flags?
Generally good jvm flags for minecraft:
-server = starts the jvm in server mode rather than client. This makes the startup a bit slower at start for better performance in the long run.
-Xms1024M = sets the jvm initial heap size to 1024 megabytes. 1024 can be replaced with a bigger or smaller number, and you can quantify in gigabytes as well using "#G". This value should really be the same as the Xmx value, because whenever you start your server, when you max out the young generation allocated RAM, you will need to re-allocate more RAM until you reach the maximum heap size. If you insist on having a lower value, then at least modify -XX:YoungGenerationSizeIncrement to increase in larger increments than 256M.
-Xmx1024M = sets the jvm maximum heap size to 1024 megabytes. The reason I have kept them the same is that it will keep allocated memory to minecraft there. From some testing this seems to boost performance, but you may not wish to always have a full allocation to minecraft. In this case, you may wish to set it moderately close to the maximum, but not the same.
-XX:+UseConcMarkSweepGC = A garbage collection flag for Concurrent "mark-sweep" gc. This is specifically for applications affected by garbage collection pauses. Instead of performing them parallel or serial, it performs them concurrently, If I remember correctly, it does this in a separate thread if available.
-XX:+UseParNewGC = This was explained before, but it runs the heavy young-generation garbage collection across multiple threads. Previously, it would use the same thread, and your program would have a horrid lag spike.
-XX:+AgressiveOpts = a jvm super-option. This activates other jvm flags. To explain them all would take a lot of time, but basically it enabled optimization and increases cache size.
-XX:+DisableExplicitGC = Disables software calls to System.gc(). Pretty much lets the jvm handle itself. (If there is a plugin making explicit gc calls, talk to the author about how necessary those are, because 99/100 times it isn't)
-Xloggc:gc = creates a garbage collection log within the same directory as the executed file.
There are other flags that don't have much relevance at all, and really do not matter if you use or not:
-d32 = Forces the jvm to use 32bit mode. If you don't support 64 bit though, it will do this anyway.
-d64 = Forces the jvm to use 64bit mode if possible. If you don't support 64 bit, it will be 32 anyway.
-XX:ParallelGCThreads=# = The number of threads that ParallelGC uses. Note that, you really do not need to set this flag, the JVM will set a good number to begin with. However, if you are setting it, take caution setting it above the number of cpu cores you have.
JVM flags that you do not want to change for minecraft. Plugins that may require these at some point would be briefly mentioned, but you're almost absolutely better off without them being modified.
-Xss####M = Changes the default stack size for the jvm. Your stack size is the size that a thread has to operate, save variables and values and operate in general. If you have a plugin that is manipulating large amounts of data in a single thread/method, you may need to increase this. A common error would be "StackOverFlowError", in which a larger stack size may help to prevent. However, something producing a stack overflow error may just want to correct their coding. Another error would be "OutOfMemoryException". There may be a lot of threads that are using stack sizes bigger than necessary, in which case you could decrease the amount. Overall however, both of those errors are caused by bad programming issues, and this flag should be left alone.
-Xnoclassgc = Disables dynamic class unloading. DO NOT USE THIS WITH BUKKIT. Bukkit uses reflection a lot (and even some plugins, *cough* PermissionsEx). This flag will cause a massive memory leak within native classes and most certainly an "OutOfMemoryError".
-Xmn####M = Sets the young generation's space for garbage collection. This should not be modified, as more often than not you will throw off a well-balanced ratio between the young gen size and survival gen size.
There are generally 3 forms of garbage collection you may wish to do with minecraft. I do not go into SerialGC, because minecraft is a rather large process. The options I'm going to go into are Incremental, Parallel, and Concurrent.
(I have taken a break writing about jvm flags, will return to gc later)
I need staff members, how can I get the best?
How should I make a good staff application?
Where is the proper place to search for staff?
What is teamviewer?
How can people remotely connect to my computer?
I need firsthand help!!
Can people take control of my computer with teamviewer?
It's a desktop sharing program, it would allow them to share your screen with you so that they can remotely assist you with whatever problem you have. You are able to start/stop the input at any time, and it has text-based chat.
It is not a virus, and it is made by a company outside of mcforum. "But don't just take my word on it!", try reading reviews here: http://www.mywot.com.../teamviewer.com
How Many Players Can I Hold:
How many people can my server hold?
How much RAM do I need for this many players
Is this internet speed good?
How much lag will I have with this?
This question have come up quite often that we used to have a site that would help. However, because of the recent changes, the site has become outdated. We are working on getting a new one. However, we do have stats that you can use to calculate this value.
There are a few factors that affect your server's max capacity to hold people. CPU speed, RAM allocation, network speeds, and the type of server you have. Each of these play a different factor.
1) CPU Speed
Since natively Minecraft is not multi-threaded well, and most wrappers do not use multi-threading as well, this means that your CPU's clock speed is the main factor here. The higher a clock speed, the faster it can work. The more cores, the more it can do. If you have a dedicated server, then the number of cores are not really much to be concerned about. A CPU that has a higher clock speed and less cores is a better choice to host a dedicated server than a CPU with more cores but less clock speed as the cores will just idle.
This is one of the 2 major factors in determining the maximum number of players your server can hold. There is a simple calculation that can be done to give an approximate number of players per GB of RAM for a server.
Vanilla servers: Max players = ( (1024 * RAM) - 80 ) / 40
Craftbukkit: Max players = ( (1024 * RAM) - 240 ) / 90
These results were from a locally ran server using Ubuntu 11.10 64-bit on a Java 6 JRE and using the 1.2.5 RB 1.0. These numbers are just estimates, but should be close to what the actual numbers are.
Now, your network is the other large factor in determining your server's maximum player limits. A network can be quite limiting in your server, and also is a factor in determining lag for the server. If a host is located overseas, then expect lag regardless of any hardware the server has. To get your home network speeds for a home-hosted server, just go to http://www.speedtest.net and jot down your download and upload speeds.
Stage 1 - Connection
During this, your server is communicating with the client and transferring data back and forth. Usually the data limits here are under 10 KB/s (yes, this is in kilobytes). This stage is usually not so bad with lag unless your server is already network-heavy or the server is performing a lot of operations already. During this, usually the CPU and any plugins that run during this state will cause you lag.
Stage 2 - Downloading
During this is when your network load is expected to be the highest. This is when the server starts sending any extra data to the clients and the chunks are being sent to the client to load. During this, the network client-side receives close to 100-120 KB/s. This means a server is pushing that much data, which is what the upload speeds are about.
Stage 3 - Updates
During this is when the network load is less than the Stage 2, since chunks updates are not as frequent and it is just individual updates to the server, so average loads there are signiifcantly less than that during Stage 2. Estimated and testing has shown this to use around on average 10-30 KB/s when no chunks are being loads and it is just block changes, movement, and other minor things.
Stage 4 - Movement
This stage is a mix of both Stage 2 and Stage 3, when you will see a spike in the network loads as chunks are being sent to the client, however they are not as long or as large as during Stage 2. Usually these updates cause an expected 50 KB/s download on the client.
To determine the maximum number of clients you can safely support, we will assume that the clients are all during the Stage 2 phase, when the server is transmitting the most data.
To get the players, you first have to do a few conversions.
1) If the speedtest results give you a number in Mb/s, then you need to convert that to Kb/s by multiplying the number by 1024
2) Divide the number now by 8 to get the KB/s.
3) Max players = (internet upload ) / 120
This is assuming though that everyone is connecting at once and that they are all downloading data, so if you wanted to push it, you can increase this number by about 50% if you really wanted to push the server to its limits.
4) Server Type
As expected, the vanilla server is the lightest of the server types, so it can hold the most players and run the fastest compared to the others, but suffers from lack of customizations. Bukkit servers require more, so they are "heavier" than vanilla, meaning that they cannot reach the limits of what Vanilla can, but have the benefit of more features. Tekkit is a mix of both, so their stats can be considered the heaviest as they have the limits of Bukkit and the limits due to the mods that are added. To list the order of which can support the most and are the fastest:
1) Vanilla - very few things added, least network, RAM, and CPU loads
2) Bukkit - depending on the plugins added, but usually more consuming in the RAM and CPU
3) Tekkit - depends on plugins, but is usually heaviest with RAM and CPU with the added mod
4) FTB - heavy in cases due to the mods, usually less than Tekkit though
Using the Server Texture Pack feature
How do I use the server-texture feature?
1. Using this option as a server owner
2. Using server textures as a user
Using this option as a server owner
1. First of all you will need a link to the texture pack you'd like to use (please not adf.ly links won't work). To find this link I suggest you check out the thread/ site for the texture pack in search of the link. For this tutorial I will be using the Defscape texture by d3fin3d.
Above I have found the download links for the Defscape texture pack. All of the texture pack download links redirect to MediaFire, MediaFire cannot be used for assigning texture packs to a server as MediaFire's linking system updates per user/ every hour. You would need to request the Author's permission to upload the texture pack to another file hosting service if MediaFire is the only present option. The use of Defscape has been allowed as a server texture exclusively for this tutorial, please contact d3fin3d for further information.
As MediaFire won't work with Server Textures I shall be uploading the texture pack to Dropbox (with all of the appropriate permissions). Dropbox will allow you copy a public link (direct link) to your clipboard allowing you to continue with the tutorial.
After copying the direct link it should look like the link below or something similar if using another file hosting service.
2. Now we have a direct link to the texture pack we can assign it to the server using the server properties file which you will have to locate now. The server.properties file should be in the main server directory along with the world directories, plugins (if Bukkit) and various other .txt files etc.
3. You will now have to open this server.properties file using a text editor such as Notepad or Wordpad as shown below.
4. Almost there, now you will need to find the texture-pack= section and after the = paste the direct link to the texture pack as shown below.
5. You will now need to save the server.properties file and restart the server allowing changes to take place. On connection users will have the option to install the texture pack as prompted by the server.
Using server textures as a user
Using this feature as a user is much simpler than enabling this feature on a server and requires literally a click of a button.
1. The server textures option is enabled by default however to make sure this option is enabled within your client you will need to click the "Options..." tab on the Menu screen as shown below. I am using a texture pack whilst making this tutorial so your menu buttons may look slightly different.
2. Once you've clicked the "Options..." tab you will need to click the "Video Settings..." tab where you will be able to check the status of server textures.
3. As shown below you should now see the server textures option in the lower right corner. Make sure this option is enabled for use of this feature.
4. Visit the multiplayer tab and connect to a server, if the server has the feature enabled you should be promoted to install the texture pack as shown below. You can then click the "Yes" button if you wish to install and the client will automatically install the texture pack for you and your textures will be changed.
The texture pack will only be used whilst on the server and after disconnecting your client will automatically switch back to the texture pack you were using prior to joining the server.
Hope this tutorial helped inform both users of servers and owners of servers! Spudmonkee . Please do respect artists wherever possible by giving full credit to them for the textures, the texture pack used for this tutorial is Defscape as mentioned above.