* Added Liquid->getLiquidLevelDecreasePerBlock() * Fixed lava turning into cobblestone when flowing over water * Cache liquid flow vectors for faster entity movement * Removed a condition that made lava impossible to get rid of In the PC code, the equivalent code makes the delay between scheduled ticks 4 times longer. Here, it just breaks the code. I don't know what the 4x stuff is about, but this code does not produce the expected behaviour and lava works fine regardless. * Fixed strange behaviour with liquids trying to flow into other liquids Liquids should consider other liquids as a path of least resistance. However, they should not actually flow into them. This fixes a variety of CPU leak issues with falling water in large water bodies such as oceans. This also fixes the plus-shape effect that liquid is supposed to produce when a source is placed above ground. * Removed a bad optimization making liquids flowing down slopes behave undesirably * Optimize performance of slope searching by limiting recursion depth based on previous path lengths If we already found a step down on a previous run after 2 blocks, it doesn't make sense to continue allowing checking 4 blocks because the results will just be ignored. This allows limiting the number of recursion steps, which significantly improves the performance when flowing down slopes. However, this will still be just as bad for performance on flat terrain as it was to start with. * Make some Liquid methods only accept Blocks as parameters these are only ever passed blocks anyway, doesn't make sense to allow vectors. * Moved some things to local variables these are each only used in one function, so it doesn't make sense for them to be class members. * Fixed water flow down slopes going everywhere, but degraded performance again * Lava should only search 2 blocks for a slope * Stop wasting CPU calculating optimal flow directions for liquids with too-high decay It calculates the flow directions and THEN doesn't use them when it realizes the flow decay is too high. This is completely pointless. * Use a less hacky method to handle lava flowing into water * Doubled flow performance on flat terrain Since calculateFlowCost() usually ends up visiting the same blocks about 6 times when on flat terrain, it makes sense to cache some stuff for when blocks get revisited so expensive dumb checks don't need to keep on being done. On my machine this produces a 50-60% performance improvement when flowing on flat terrain. * Fixed missing return values in Liquid->onUpdate() these return values aren't used anywhere, but we should be consistent * Don't allow flowing back in the same direction we just came from This reduces the recursions by about 30%, providing about the same percentage performance improvement. * Remove Liquid's temporalVector (it's not used anymore) primitive types for the win! * Move liquid collide to its own method * add sound for lava/water mix
A highly customisable, open source server software for Minecraft: Pocket Edition written in PHP
Setup, help & support, FAQs
Head over to the documentation site. If you don't find what you're looking for there, talk to a human. Please do not use our issue tracker for support requests.
Discussion
Plugins
There are a very wide range of already-written plugins available which you can use to customise your server. Check out Poggit, or just search GitHub.
For developers
- Latest API documentation - Doxygen documentation generated from development
- DevTools - A development tools plugin for creating plugins.
Can I contribute?
Yes you can! Contributions are welcomed provided that they comply with our Contributing Guidelines. Please ensure you read the relevant sections of the guidelines carefully before making a Pull Request or opening an Issue.
Where can I get the latest .phar?
Head over to our official Jenkins server
Third-party Libraries/Protocols Used
- PHP Sockets
- PHP mbstring
- PHP BCMath
- PHP pthreads by krakjoe: Threading for PHP - Share Nothing, Do Everything.
- PHP YAML by Bryan Davis: The Yaml PHP Extension provides a wrapper to the LibYAML library.
- LibYAML by Kirill Simonov: A YAML 1.1 parser and emitter written in C.
- cURL: cURL is a command line tool for transferring data with URL syntax
- Zlib: A Massively Spiffy Yet Delicately Unobtrusive Compression Library
- Source RCON Protocol
- UT3 Query Protocol
Licensing information
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
pmmp/PocketMine are not affiliated with Mojang. All brands and trademarks belong to their respective owners. PocketMine-MP is not a Mojang-approved software, nor is it associated with Mojang.