fe8fc6b90e
Both the CB 1.3.1 code, and vanilla 1.3.1 code, have modified the behavior of entity tick processing in a way that can lead to disabling of entity cleanup. Specifically, the tickEntities() call in n.m.s.World, which processes both the entity cleanup (removing from the world entity list) and tile entity tick processing (furnaces and such) does not get called by n.m.s.MinecraftServer's q() method (which drives tick processing calls in general) when no players are on the given world. This causes a serious memory leak when automation processes, like dynmap mapping, load and unload chunks - as entities on unloaded chunks are only cleaned up during entity tick processing. It also will cause issues with any mods that use persistent chunk loading (that is, keeping chunks loaded so that tile entities will continue being processed), since such processing will no longer function without at least one player on the given world. In any case, the tickEntities() call should be called in the same fashion as under 1.2.x (each tick, independent of player population, as opposed to being suspended indefinitely when no players are on the given world). The specific memory leak observed, with removing the unloaded entites from the world, requires this call be made regularly (or, at least, whenever the entity unload queue (world.g) is not empty. Closes GH-832 |
||
---|---|---|
src | ||
.gitignore | ||
LGPL.txt | ||
LICENCE.txt | ||
pom.xml | ||
README.md |
CraftBukkit
A Bukkit (Minecraft Server API) implementation
Website: http://bukkit.org
Bugs/Suggestions: http://leaky.bukkit.org
Compilation
We use maven to handle our dependencies.
- Install Maven 3
- Check out and install Bukkit
- Note: this is not needed as the repository we use has Bukkit too, but you might have a newer one (with your own changes :D)
- Check out this repo and:
mvn clean package
Coding and Pull Request Conventions
- We generally follow the Sun/Oracle coding standards.
- No tabs; use 4 spaces instead.
- No trailing whitespaces.
- No CRLF line endings, LF only, put your gits 'core.autocrlf' on 'true'.
- No 80 column limit or 'weird' midstatement newlines.
- The number of commits in a pull request should be kept to a minimum (squish them into one most of the time - use common sense!).
- No merges should be included in pull requests unless the pull request's purpose is a merge.
- Pull requests should be tested (does it compile? AND does it work?) before submission.
- Any major additions should have documentation ready and provided if applicable (this is usually the case).
- Most pull requests should be accompanied by a corresponding Leaky ticket so we can associate commits with Leaky issues (this is primarily for changelog generation on dl.bukkit.org).
- Try to follow test driven development where applicable.
If you make changes or add net.minecraft.server classes it is mandatory to:
- Get the files from the mc-dev repo - make sure you have the last version!
- Make a separate commit adding the new net.minecraft.server classes (commit message: "Added x for diff visibility" or so).
- Then make further commits with your changes.
- Mark your changes with:
- 1 line; add a trailing:
// CraftBukkit [- Optional reason]
- 2+ lines; add
- Before:
// CraftBukkit start [- Optional comment]
- After:
// CraftBukkit end
- Before:
- 1 line; add a trailing:
- Keep the diffs to a minimum (really important)
Tips to get your pull request accepted
Making sure you follow the above conventions is important, but just the beginning. Follow these tips to better the chances of your pull request being accepted and pulled.
- Make sure you follow all of our conventions to the letter.
- Make sure your code compiles under Java 5.
- Provide proper JavaDocs where appropriate.
- Provide proper accompanying documentation where appropriate.
- Test your code.
- Make sure to follow coding best practises.
- Provide a test plugin binary and source for us to test your code with.
- Your pull request should link to accompanying pull requests.
- The description of your pull request should provide detailed information on the pull along with justification of the changes where applicable.