518eefbe10
This replaces the existing IMount openFor* method with openChannelFor* ones, which return an appropriate byte channel instead. As channels are not correctly closed when GCed, we introduce a FileSystemWrapper. We store a weak reference to this, and when it is GCed or the file closed, we will remove it from our "open file" set and ensure any underlying buffers are closed. While this change may seem a little odd, it does introduce some benefits: - We can replace JarMount with a more general FileSystemMount. This does assume a read-only file system, but could technically be used for other sources. - Add support for seekable (binary) handles. We can now look for instances of SeekableByteChannel and dynamically add it. This works for all binary filesystem and HTTP streams. - Rewrite the io library to more accurately emulate PUC Lua's implementation. We do not correctly implement some elements (most noticably "*n", but it's a definite improvement. |
||
---|---|---|
gradle/wrapper | ||
libs | ||
luaj-2.0.3 | ||
src/main | ||
.gitignore | ||
.travis.yml | ||
build_luaj.sh | ||
build.gradle | ||
codesize.sh | ||
deploy.sh | ||
gradlew | ||
gradlew.bat | ||
LICENSE | ||
LICENSE-luaj | ||
README.md | ||
setup.bat | ||
setup.sh |
ComputerCraft
ComputerCraft is a Minecraft modification which adds programmable Robots and Computers to the world of Minecraft. If you're not familiar with ComputerCraft, visit the Website or the Wiki to find out more.
About this Repository
ComputerCraft was originally released in late 2011 by Daniel Ratcliffe. In early 2017, after working on the mod solo for five years, it was decided to release the source code publicly to allow Dan to devote time to other projects. This repository marks the first public release of this source code.
The code in this repository will always represent the "bleeding edge" of the ComputerCraft codebase, but stable builds back to 1.79 will be marked on the Releases page.
Contributing
While ComputerCraft will no longer be actively developed by Daniel Ratcliffe, you may still contribute pull requests which will be reviewed and incorporated into releases periodically. A pull request is more likely to be accepted if it meets the following criteria:
- It does not add any new dependencies for compiling, running or using the mod.
- It does not break compatibility with world saves or programs created with previous versions of the mod.
- It does not add unneccessary complexity for users of the mod, and maintains the accessibility for which the mod is known.
- It does not add unneccessary complexity or stylistic changes to the code, especially where functionality is not being changed.
- It does not create bugs!
The pull requests most likely to be accepted are those which fix bugs, simplify code, or make the mod compatible with newer versions of Minecraft.