Commit Graph

338 Commits (fe7c763d06e6934248af25262dad7256f1771a8e)

Author SHA1 Message Date
BodgeMaster fe7c763d06 lib/varint: Add VarInt library
Minecraft uses 32-bit and 64-bit VarInt types to cut down on network usage.
This library currently contains read functions for conversion to normal integers.

Something seems to be wrong with the converter for 64-bit varints,
can’t figure out what rn.
2022-11-25 22:19:49 +01:00
BodgeMaster d392e080ca test/nbt_tags: Add tests for constructing invalid lists/compounds 2022-11-25 17:07:35 +01:00
BodgeMaster 60a8ac9788 lib/nbt: Make constructor NBT::Tag::Compound::Compound(name, data) private
The constructor has been made private and replaced with a static wrapper
function to make constructing from invalid data impossible.

If there is more than one end tag or an end tag isn’t at the end,
an error will be returned.
2022-11-25 15:52:24 +01:00
Shwoomple bc2255de6b lib/file: Fix issue #71 - Electric Boogaloo (Out of bounds access)
Add size constraint to make sure string terminates at the correct
length. Cygwin appears to not put null bytes to terminate string when
reading from a file stream.
2022-11-12 11:51:43 +05:30
Shwoomple 9bda607649 lib/file: Implement cut function. 2022-11-12 10:59:08 +05:30
Shwoomple 76dd30c45a lib/file:Fix issue #71 (Out of Bounds access) 2022-11-12 10:58:27 +05:30
Shwoomple f784948c3e lib/file: fix cutByte filesize bug 2022-10-30 16:10:33 +00:00
Shwoomple d794bce288 lib/file.cpp: Implement cutByte function 2022-10-30 16:10:33 +00:00
BodgeMaster 99c8f562d6 setupenv: Fix wrong path 2022-10-30 06:10:04 +01:00
BodgeMaster 57a86cba47 setupenv: Add workaround for LD_LIBRARY_PATH on Cygwin 2022-10-30 05:56:34 +01:00
BodgeMaster 5ff8a871ad lib/javacompat: Make this a header library
Cygwin build issues were caused by lib/nbt impleicitly linking against this
2022-10-30 04:55:58 +01:00
BodgeMaster e0994e5db8 resources/java/netty-tests: Add maven project
This is going to be used for figuring out how Netty operates
and whether we should just make our own version or port the
existing Netty to C++ and use it as a dependency or whether
we even need it at all.
2022-10-30 03:17:25 +01:00
BodgeMaster 80c8a46ab2 Documentation and resources: Updates and minor clean-up 2022-10-30 02:53:56 +02:00
BodgeMaster 4abb1f223c lib/nbt: Lists can no longer be constructed from invalid sets of data
The constructor `NBT::Tag::List::List(tiny_utf8::string, std::vector<NBT::Tag::Generic*>)`
is now private and has a wrapper function `NBT::Tag::List::constructWithData(tiny_utf8::string, std::vector<NBT::Tag::Generic*>)`
that performs a sanity check on the data it is given.
2022-10-28 04:08:06 +02:00
BodgeMaster 4da50d3c6b test/dumpnbt: Add unit test (fixing #63) 2022-10-28 02:45:52 +02:00
BodgeMaster c9b56d4d7f tools/dumpnbt: Remove unused CLI flag 2022-10-28 02:45:25 +02:00
BodgeMaster 7bccaca7b9 fossvg and fossvgd: Add stub programs for client and server 2022-10-28 01:53:20 +02:00
BodgeMaster f6b965040d tools/hexnet: Compile with POSIX threads
Because apparently that’s not the default on NetBSD for some reason.
2022-10-23 03:06:48 +02:00
BodgeMaster b5c18cd0de tools/hexnet: Implement bi-directional communication 2022-10-23 01:48:47 +02:00
BodgeMaster a1ba08b7db tools/hexnet: Shut down connections when gracefully handling signals 2022-10-23 01:47:44 +02:00
BodgeMaster 1d7e98d0b3 tools/hexnet: Implement function for reading bytes from stdin 2022-10-23 01:45:59 +02:00
BodgeMaster a7e07d2c3c tools/hexnet: Implement UDP support (and minor refactoring) 2022-10-22 18:51:29 +02:00
BodgeMaster 7ae843039c tools/hexnet: Implement TCP v6 handler, rename readFromTCPSocket to readFromTCP 2022-10-22 01:18:44 +02:00
BodgeMaster 5574cdb4bf tools/hexnet: Don’t confuse users 2022-10-22 01:02:00 +02:00
BodgeMaster 89cfb9d850 tools/hexnet: Reduce redundant code 2022-10-21 23:01:03 +02:00
BodgeMaster f681c54c82 tools/hexnet: Reimplement TCP server, implement TCP client
Both can only receive at the moment as we still don’t handle input.
2022-10-21 23:01:03 +02:00
BodgeMaster ee0ebb273c tools/hexnet: Add instructions for setting up TTY 2022-10-21 23:01:03 +02:00
Shwoomple 8dea1f2d31 lib/file: Implement modify functions 2022-10-20 15:12:15 +05:30
Shwoomple c825c73afd lib/file: Implement insertByte function 2022-10-20 13:02:15 +05:30
Shwoomple e7711a3d59 commit merge 2022-10-20 10:27:48 +05:30
Shwoomple e7ce6f5cd4 lib/file: Fix write function bugs 2022-10-20 10:27:00 +05:30
BodgeMaster ee9b5d4f67 tools/hexnet: Add command line parser back
Reimplementation has started.
2022-10-19 15:26:38 +02:00
BodgeMaster b84130344d tools/hexnet: Starting over 2022-10-19 15:26:38 +02:00
BodgeMaster 25d7806f6d lib/nbt: Fix memory leak in case of parsing error 2022-10-19 15:26:38 +02:00
Shwoomple 6e57a86338 lib/file: Implement write functions 2022-10-19 10:43:23 +05:30
Shwoomple c54eb48887 lib/file: Implement writeByte function 2022-10-18 20:57:02 +05:30
BodgeMaster c14504ce0b tools/dumpnbt: Display empty lists correctly 2022-10-17 07:02:36 +02:00
BodgeMaster 92cf81c1b4 tools/dumpnbt: Implement basic functionality.
FINALLY!!! :^)
2022-10-17 06:40:56 +02:00
BodgeMaster df35243ee9 lib/nbt: Add NBT::Tag::List::getContainedType()
Supid oversight, easily work-aroundable,
but it doesn’t hurt and was easy to implement
2022-10-17 06:39:42 +02:00
BodgeMaster 36dcf0a0f5 resources/dumpnbt_output_format: Give end tags header and payload information 2022-10-17 06:37:16 +02:00
BodgeMaster 93fdcb7b65 resources: Add a file with examples for possible dumpnbt output
This may be useful for future unit tests.
I did this because I had no fucking idea how to implement drawing
the tree. I still have no fucking idea.

I hope there are no errors in there. If there are any, we’ll
find out when writing the relevant unit tests.
2022-10-16 07:40:55 +02:00
BodgeMaster 8d2f3f2fa5 tools/dumpnbt: Switch from using the validator to using the parser, update some strings 2022-10-16 07:40:00 +02:00
BodgeMaster cdc23e7468 lib/nbt: Implement parser 2022-10-15 23:05:26 +02:00
BodgeMaster e9bfb6eeee resources/NBT_data: Add two files that are valid NBT by our extended spec
Since we allow loose tags to be valid NBT data, this is valid NBT by our spec.
This isn’t valid by Mojang’s spec.
2022-10-15 21:41:32 +02:00
BodgeMaster 8b62ec9c88 lib/nbt: Get rid of that ugly #define return hack
Instead of doing #define return, the boolean returnValue is set and
a goto statement is used to get to the code that does what the macro
used to do.
2022-10-15 18:55:58 +02:00
BodgeMaster ca0af3306f test/nbt_tags: Implement Int64Array test
My arm hurts.
My back huts.
Man, that was exhausting.
Finally done.
2022-10-14 22:58:59 +02:00
BodgeMaster 9b21dfaee5 test/nbt_tags: Implement Int32Array test 2022-10-14 22:33:57 +02:00
BodgeMaster 996154fbbc lib/nbt: Return the correct error code from soem functions for i32 arrays. 2022-10-14 22:33:32 +02:00
BodgeMaster 77dd79398f test/nbt_tags: Test compound serialization 2022-10-14 21:46:55 +02:00
BodgeMaster fd5fe3967f test/nbt_tags: Partially implement compound test 2022-10-14 20:33:43 +02:00