|
45693
|
Desk Stroller by @ZordonV7 | Stardance
|
ZordonV7
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Desk Stroller by @ZordonV7 | Stardance
|
1792633740.62591
|
1793238540.62591
|
|
45692
|
STM-32 Rocket Flight Controller by @CJ | Stardance
|
CJ
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: STM-32 Rocket Flight Controller by @CJ | St Title: STM-32 Rocket Flight Controller by @CJ | Stardance...
|
1792633739.8001826
|
1793238539.8001826
|
|
45691
|
JetKVM-Remote by @TheDoctor19 | Stardance
|
TheDoctor19
|
0
|
2.0
|
0
|
[]
|
[{"post_id": 46644, "ts": "202 [{"post_id": 46644, "ts": "2026-08-14T01:34:27Z", "hours": 1.9953, "text": "The Ui is ready for IOS mobile, tho it is not optimized for IpadOS. The app is also not working at the moment and just a concept"}]...
|
Title: JetKVM-Remote by @TheDoctor19 | Stardance
Title: JetKVM-Remote by @TheDoctor19 | Stardance
Devlogs:
The Ui is ready for IOS mobile, tho it is not optimized for IpadOS. The app is also not working at the moment and just a concept...
|
1792633738.9344478
|
1793238538.9344478
|
|
45688
|
Self balancing robot by @ramarajuvittal | Stardanc Self balancing robot by @ramarajuvittal | Stardance...
|
ramarajuvittal
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Self balancing robot by @ramarajuvittal | S Title: Self balancing robot by @ramarajuvittal | Stardance...
|
1792633733.3107393
|
1793238533.3107393
|
|
45687
|
Vex Bot discord Bot by @avprojects | Stardance
|
avprojects
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Vex Bot discord Bot by @avprojects | Starda Title: Vex Bot discord Bot by @avprojects | Stardance...
|
1792633732.4922307
|
1793238532.4922307
|
|
45686
|
Foil-Drive by @java | Stardance
|
java
|
0
|
0.27
|
0
|
[]
|
[{"post_id": 43461, "ts": "202 [{"post_id": 43461, "ts": "2026-08-08T18:44:54Z", "hours": 0.2697, "text": "This is my project to attach a motor to my sailboat. What I have done is attach a mount to my boat foil and I have been doing some intil testing."}]...
|
Title: Foil-Drive by @java | Stardance
Devlogs:
T Title: Foil-Drive by @java | Stardance
Devlogs:
This is my project to attach a motor to my sailboat. What I have done is attach a mount to my boat foil and I have been doing some intil testing....
|
1792633730.9525397
|
1793238530.9525397
|
|
45685
|
My awesome macropad! by @myemail3_141592 | Stardan My awesome macropad! by @myemail3_141592 | Stardance...
|
myemail3_141592
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @myemail3_141592 | Title: My awesome macropad! by @myemail3_141592 | Stardance...
|
1792633730.1069992
|
1793238530.1069992
|
|
45684
|
mywebos by @arhamgangwal | Stardance
|
arhamgangwal
|
0
|
1.65
|
0
|
[]
|
[{"post_id": 45079, "ts": "202 [{"post_id": 45079, "ts": "2026-08-11T10:56:43Z", "hours": 1.0544, "text": "Made the window draggable and added open and closing functionality to the window"}, {"post_id": 43897, "ts": "2026-08-09T10:47:35Z", "hours": 0.5944, "text": "I am making a personal portfolio website in the format of webos, it is still in the very early stages and I am still learning html"}]...
|
Title: mywebos by @arhamgangwal | Stardance
Devlo Title: mywebos by @arhamgangwal | Stardance
Devlogs:
I am making a personal portfolio website in the format of webos, it is still in the very early stages and I am still learning html
Made the window draggable and added open and closing functionality to the window...
|
1792633729.2583914
|
1793238529.2583914
|
|
45683
|
My awesome macropad! by @rihan_hsn09 | Stardance
|
rihan_hsn09
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @rihan_hsn09 | Star Title: My awesome macropad! by @rihan_hsn09 | Stardance...
|
1792633728.3958912
|
1793238528.3958912
|
|
45681
|
Minecraft Hotbar by @maindanikraft | Stardance
|
maindanikraft
|
0
|
1.28
|
0
|
[]
|
[{"post_id": 43733, "ts": "202 [{"post_id": 43733, "ts": "2026-08-09T04:28:51Z", "hours": 1.285, "text": "DEV LOG 1 Starting OnShape"}]...
|
Title: Minecraft Hotbar by @maindanikraft | Starda Title: Minecraft Hotbar by @maindanikraft | Stardance
Devlogs:
DEV LOG 1 Starting OnShape...
|
1792633727.5117927
|
1793238527.5117927
|
|
45680
|
Nova Rush by @Zee | Stardance
|
Zee
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Nova Rush by @Zee | Stardance
|
1792633726.498048
|
1793238526.498048
|
|
45679
|
QUANTUM OS by @nandisha | Stardance
|
nandisha
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: QUANTUM OS by @nandisha | Stardance
|
1792633725.6620264
|
1793238525.6620264
|
|
45677
|
Mach switch by @Pratyul | Stardance
|
Pratyul
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Mach switch by @Pratyul | Stardance
|
1792633724.8441126
|
1793238524.8441126
|
|
45675
|
OS Emulator by @paulo | Stardance
|
paulo
|
0
|
1.45
|
0
|
[]
|
[{"post_id": 44248, "ts": "202 [{"post_id": 44248, "ts": "2026-08-09T21:33:42Z", "hours": 1.4525, "text": "Really early development phase! This is a prototype of an OS Emulator, for now, it only has 2 basic commands, and mostly prints to the screen. I do not intend on making this anything “functional” in the meaning of flashing into a ISO and booting in a computer. That is the reason it is called an “Emulator”, BUT I do want to make it have an internal storage disk like os.vdisk or something like that, so users (me) could do file operations inside it."}]...
|
Title: OS Emulator by @paulo | Stardance
Devlogs: Title: OS Emulator by @paulo | Stardance
Devlogs:
Really early development phase! This is a prototype of an OS Emulator, for now, it only has 2 basic commands, and mostly prints to the screen. I do not intend on making this anything “functional” in the meaning of flashing into a ISO and booting in a computer. That is the reason it is called an “Emulator”, BUT I do want to make it have an internal storage disk like os.vdisk or something like that, so users (me) could do file operations inside it....
|
1792633723.9860406
|
1793238523.9860406
|
|
45674
|
My own site! by @EmilyZ | Stardance
|
EmilyZ
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @EmilyZ | Stardance
|
1792633723.1079743
|
1793238523.1079743
|
|
45673
|
My awesome macropad! by @ishaannalla780 | Stardanc My awesome macropad! by @ishaannalla780 | Stardance...
|
ishaannalla780
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @ishaannalla780 | S Title: My awesome macropad! by @ishaannalla780 | Stardance...
|
1792633722.1442094
|
1793238522.1442094
|
|
45672
|
Warioware style game by @D_O | Stardance
|
D_O
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Warioware style game by @D_O | Stardance
|
1792633721.2968776
|
1793238521.2968776
|
|
45669
|
Untitled project by @Ron_Li | Stardance
|
Ron_Li
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled project by @Ron_Li | Stardance
|
1792633720.451124
|
1793238520.451124
|
|
45667
|
My first slack bot! by @Ernestj | Stardance
|
Ernestj
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Ernestj | Stardance
|
1792633719.5912106
|
1793238519.5912106
|
|
45666
|
Solar Powered Weather Tracker for my Plant by @shg Solar Powered Weather Tracker for my Plant by @shgam | Stardance...
|
shgam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Solar Powered Weather Tracker for my Plant Title: Solar Powered Weather Tracker for my Plant by @shgam | Stardance...
|
1792633718.5938911
|
1793238518.5938911
|
|
45665
|
SVG FOR P1S by @donovandyck410 | Stardance
|
donovandyck410
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: SVG FOR P1S by @donovandyck410 | Stardance
|
1792633717.7605963
|
1793238517.7605963
|
|
45664
|
My very own WebOS by @Vishyfr | Stardance
|
Vishyfr
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My very own WebOS by @Vishyfr | Stardance
|
1792633716.9061797
|
1793238516.9061797
|
|
45663
|
My awesome macropad! by @shgam | Stardance
|
shgam
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @shgam | Stardance
|
1792633716.0704243
|
1793238516.0704243
|
|
45662
|
Lars' Tech Lab by @LarsHuisken | Stardance
|
LarsHuisken
|
0
|
0.41
|
0
|
[]
|
[{"post_id": 43460, "ts": "202 [{"post_id": 43460, "ts": "2026-08-08T18:41:25Z", "hours": 0.4142, "text": "I am working on the initial code. This is the first time of me coding all by myself, anyone got any tips on learning HTML, CSS and JS?"}]...
|
Title: Lars' Tech Lab by @LarsHuisken | Starda Title: Lars' Tech Lab by @LarsHuisken | Stardance
Devlogs:
I am working on the initial code. This is the first time of me coding all by myself, anyone got any tips on learning HTML, CSS and JS?...
|
1792633715.2256703
|
1793238515.2256703
|
|
45661
|
WARIO WARE GAME by @Kriyansh | Stardance
|
Kriyansh
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: WARIO WARE GAME by @Kriyansh | Stardance
|
1792633713.964714
|
1793238513.964714
|
|
45658
|
my bot by @Sparkz | Stardance
|
Sparkz
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: my bot by @Sparkz | Stardance
|
1792633712.8175867
|
1793238512.8175867
|
|
45656
|
My first slack bot! by @Gursewak01 | Stardance
|
Gursewak01
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @Gursewak01 | Starda Title: My first slack bot! by @Gursewak01 | Stardance...
|
1792633711.9771793
|
1793238511.9771793
|
|
45653
|
Turbocharged PC by @emy_ | Stardance
|
emy_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Turbocharged PC by @emy_ | Stardance
|
1792633711.1505923
|
1793238511.1505923
|
|
50546
|
Vape Pods by @vapepods | Stardance
|
vapepods
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Vape Pods by @vapepods | Stardance
|
1792633710.2406535
|
1793238510.2406535
|
|
45652
|
My first slack bot! by @elias_brutov | Stardance
|
elias_brutov
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My first slack bot! by @elias_brutov | Star Title: My first slack bot! by @elias_brutov | Stardance...
|
1792633709.3858464
|
1793238509.3858464
|
|
45651
|
RSA cyper by @guy-flands | Stardance
|
guy-flands
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: RSA cyper by @guy-flands | Stardance
|
1792633708.5527956
|
1793238508.5527956
|
|
50544
|
The best Bot every use by @BenjaminLewis | Stardan The best Bot every use by @BenjaminLewis | Stardance...
|
BenjaminLewis
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: The best Bot every use by @BenjaminLewis | Title: The best Bot every use by @BenjaminLewis | Stardance...
|
1792633707.728941
|
1793238507.728941
|
|
45650
|
ClapperBox by @DARNOK | Stardance
|
DARNOK
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: ClapperBox by @DARNOK | Stardance
|
1792633706.7416105
|
1793238506.7416105
|
|
50543
|
Cyberdeck by @jamesmetze12 | Stardance
|
jamesmetze12
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cyberdeck by @jamesmetze12 | Stardance
|
1792633705.5940142
|
1793238505.5940142
|
|
50541
|
Cosmic observer by @naksu | Stardance
|
naksu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Cosmic observer by @naksu | Stardance
|
1792633704.7560444
|
1793238504.7560444
|
|
37986
|
VeriSync by @DrkGenius | Stardance
|
DrkGenius
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: VeriSync by @DrkGenius | Stardance
|
1792633703.9071217
|
1793238503.9071217
|
|
50540
|
Custom Minecraft Server Scaffolding by @Sabrina | Custom Minecraft Server Scaffolding by @Sabrina | Stardance...
|
Sabrina
|
0
|
45.23
|
0
|
[]
|
[{"post_id": 78377, "ts": "202 [{"post_id": 78377, "ts": "2026-10-10T16:33:57Z", "hours": 1.0547, "text": "Chunk Cache Center + small bug fix I have made it so the server will finally send the SetChunkCacheCenter packet whenever you move, just like the vanilla server. Previously this was only send on login, and seemingly stalled my server for no reason when I tried to send it continuously. I found out that the issue was in my WriteVarInt function, where negative values lead to an infinite loop. Now that this is fixed I can send that packet anytime now!!"}, {"post_id": 78158, "ts": "2026-10-09T20:28:39Z", "hours": 4.2464, "text": "Readme, prepping for ship, and some other changes I made some more packets for moving in a vehicle, paddling a boat, and player right click interations. Just 3 more packets towards feature completeness. Once again they’re just for reading them and telling the world about them, it is up to the user to implement them (kinda) I also made the readme (for the most part) and corrected my writeup on where i got the registries from and fixed my requirements.txt"}, {"post_id": 67651, "ts": "2026-09-13T20:07:12Z", "hours": 1.6339, "text": "Rewrote data reader + writers I have rewrote all of the code that wrote and read the packet data. now reading uses a reader class that can just call readbool, readint, etc etc one after another instead of needing to chop off data after each read. Simillarly for the writer I made it so that you can just make a writer and call .writeInt, writebool. etc etc w/o needing to do a += on a bytes object. Next Now that my code is cleaned up quite a bit, I want to clean it up some more by moving all of the writing functions into their packet class so you can call something like: StatusResponse_ClientBound.write(PARAMS) to make the code much nicer. after that I will add more play packets to get more feature complete"}, {"post_id": 67518, "ts": "2026-09-13T17:12:39Z", "hours": 4.1989, "text": "Working towards being feature complete! I implemented some more play packets. While they are not 100% functional the server can recognize them and forward it to the world to be handled/implemented later when the times comes. The client is now a subclass of the entity class, making things a bit easier. As mentioned above, the client, when receiving a packet response from handling a packet, it could be of a server packet response type, which then the client routes it’s responses directly to the server/world for handling. Also now on startup we print out the completeness of the server. It just measures how many of the server bound packets we have implemented. I will work on making a client bound completeness print after finishing (mostly) the server bound ones, but I assume by time i get there many will be implemented already due to the handling of server bound packets Up next I want to continue implementing more play packets to become more feature complete, also for one of the packets I wrote a write method that took in parameters and returned a fully completed packet, I might need to do that w/ some other packets like the login and player joining ones to make my code smaller on the world.py end and more appropriate on the packets.py end"}, {"post_id": 66745, "ts": "2026-09-12T17:14:24Z", "hours": 2.4939, "text": "Automatically loading chunks Chunks now automatically load when you walk by them. its based on the render distance so when i move it tries to send all the chunks in a radius around the player to them. I also fixed a niche bug, that when there is 1 byte left in a packet after reading it could cause the packet to say it is fine with reading the rest & drop off the last byte, but now it is fixed! Next I want to import the definitions for a bunch of the play packets (mostly server bound packets) and then polish up my code and do any todo items and then ship. after shipping ill make a fork and work on my lce minigame server"}, {"post_id": 57450, "ts": "2026-08-29T16:28:19Z", "hours": 0.29, "text": "Caching tags works! Sub 5 second loading times now! (after the pregeneration is done that is) I moved the tag generation into a class inside of Registry.py and it caches. So after everything generates for the first time loading into the world takes less than 5 seconds!! I’m very proud of how this has turned out so far. I gonna work on some play packets, write a readme, then ship"}, {"post_id": 57426, "ts": "2026-08-29T15:57:23Z", "hours": 3.4022, "text": "Migrated to SyncedRegistry instead of clientObj.registries So I’ve make a SyncedRegistry class and had it do all the wonderful things client.generateAndSendRegistryData would create for them, I then removed the client.registries and make all references to it use Registry.getSyncedRegistry() and if they needed to get the all the entries and not just one specific one, they can call .getEntries() on that synced register This change will improve load times & syncability between players. All players will have the same registry data so I can save the chunk packet bytes for that. (it also means i can generate chunk packet bytes w/o needing a reference player and STILL get the biome data correct) The world on init preloads all the required registries needed and that improves join time. Next I need to do the same for the tags data because that is the one that takes up the most time, and caching that would be so great. Also i want to resolve more PLAY packets so my server can be more feature complete, but rn it looks very good and I might ship it and use it for my minigame server soon"}, {"post_id": 56361, "ts": "2026-08-28T03:31:44Z", "hours": 1.8853, "text": "Cached chunk packets After a chunk is requested into a packet i cache it for later. This system is prone to breaking if the synced registries for each player aren’t the same but im hoping to make sure they are the same. (I also want to precompute these and or cache them) I experimented with a bunch of precomputing and caching and seemingly for now just saving the packet data after computing it once on load seems to work just fine for me right now"}, {"post_id": 55337, "ts": "2026-08-27T02:37:18Z", "hours": 1.2508, "text": "Real chunks decoded & rendering!! I have managed to decode a bunch of chunks!(pictued is a 3x3 area rendered because of a 5x5 area thats loaded) I still have set the blocklight and skylight to all 15s and i will probably need to go and fix that in a bit later, but for now it just copies over the palette from the global block state palette, copies over the longs for the biome data + palette. For the most part it just copies over the nbt data into bytes and packages it up. It also makes up data, like it also says theres 16^3 (the maximum) blocks in each subchunk. This is to prevent it from unrendering when breaking stuff Todo: I want to load a bunch more chunks to make it more seamless I want to properly give the lighting data, but ill do that later as it works fine for right this second I want to make sending synchronized registries faster and possibly cache the packets that send them"}, {"post_id": 55250, "ts": "2026-08-26T22:15:30Z", "hours": 3.7433, "text": "FINALLY GOT CHUNKS LOADING Okay so i figured out what the heck bit sets were (they’re arrays of bits, or i saved them as an array of bools) and so I was able to make the lighting data needed to render stuff, and that also fixed my player not rendering! When loading just 1 chunk it doesn’t render, it needs to be surrounded by other chunks so here is me loading a 3x3 chunk area, and as you can see the middle one has rendered. The chunks right now are all stone and FULL 15 brightness on blocks & skylight everywhere. I soon will import the actual light data and the actual block data, i just need to figure out where the global block state palette is and not the global block palette!"}, {"post_id": 53465, "ts": "2026-08-24T01:12:40Z", "hours": 6.0419, "text": "misc preloaded into world packets I made the server send a bunch of packets for extra info about the world before loading in. I also make a region file handler to get chunk & subchunk data in nbt format. Issues Currently idk how to write the level_chunk_with_light packet and it always says 14KB or 22KB of extra data, i need to look into it Also for some reason the player’s game crashes when they move (but not look around) due to ticking entity or something. I will also need to investigate this I’mma take a break from this as school has started recently, ive been spending so much time on this, and the chunk roadblock makes me very demotivated"}, {"post_id": 50709, "ts": "2026-08-20T01:18:44Z", "hours": 3.6006, "text": "2 main threads, Server.py and World.py I have now made a main.py that spawns server.py and has it run all the same code as before, connecting clients, and IOing the packets in and out. But now there is World.py which is a class that runs the world, accept player connections, and will do all of the packet creation and queuing after the client fully connects to the world More packets I added a bunch more optional packets for extra info, and more will be on the way"}, {"post_id": 50083, "ts": "2026-08-19T04:29:23Z", "hours": 0.8431, "text": "Play setup is almost done After the server sends the login packet it sends a whole bunch of packets to the client to finalize some things to make sure everything is good. It adds player datas, teleport the player somewhere, preps the client for chunk loading, sets the time, etc After all that finishes then the client will say that it has loaded and then we can exchange packets of interacting with the environment, and loading new chunks, etc"}, {"post_id": 50066, "ts": "2026-08-19T03:36:50Z", "hours": 2.1181, "text": "Connecting state finished! I have finished the connecting/configuring part of the connection. Now when a client tries to connect it goes all the way through the configuring state, which includes the registry & tagged registry packets (which there are a lot of) and then the client accepts all of them then transfers into the playing state! Now all is left to do is make the actual playing server instead of connection hell"}, {"post_id": 49999, "ts": "2026-08-19T00:59:04Z", "hours": 4.8989, "text": "Update Tags Packet I HATE YOU MOJANG, TAG PACKETS ARE THE BANE OF MY EXISTANCE For those of you lucky enough to not have needed to make a minecraft server from scratch, this is evil and fucked up. You have to send a bunch of registries and the tags that they reference. And they can reference other tags, and it is very confusing to make. Also there are built in registries that aren’t exposed to you that you sometimes have to use. So I had to extract those from server.jar Anyways im till working though that stuff so it isn’t done yet…"}, {"post_id": 49670, "ts": "2026-08-18T15:40:14Z", "hours": 3.5292, "text": "TCP Server and Packets I got a TCP Socket server running and receiving bytes from a minecraft client. I also created a bunch of packets that are a subclass of the Packet class. This allows me to create any packet type I want w/ client or serverbound properties and what id they have. It’ll make it easier to change the IDs when they eventually change in future updates. The server works by spawning a clientHandler thread when a client connects to the tcp server It keeps reading bytes until the client ends the connection Everytime we receive bytes from the client we decode as much as we can, and then we handle each of them in a FIFO style."}]...
|
Title: Custom Minecraft Server Scaffolding by @Sab Title: Custom Minecraft Server Scaffolding by @Sabrina | Stardance
Devlogs:
TCP Server and Packets I got a TCP Socket server running and receiving bytes from a minecraft client. I also created a bunch of packets that are a subclass of the Packet class. This allows me to create any packet type I want w/ client or serverbound properties and what id they have. It’ll make it easier to change the IDs when they eventually change in future updates. The server works by spawning a clientHandler thread when a client connects to the tcp server It keeps reading bytes until the client ends the connection Everytime we receive bytes from the client we decode as much as we can, and then we handle each of them in a FIFO style.
Update Tags Packet I HATE YOU MOJANG, TAG PACKETS ARE THE BANE OF MY EXISTANCE For those of you lucky enough to not have needed to make a minecraft server from scratch, this is evil and fucked up. You have to send a bunch of registries and the tags that they reference. And they can reference other tags, and it is very confusing to make. Also there are built in registries that aren’t exposed to you that you sometimes have to use. So I had to extract those from server.jar Anyways im till working though that stuff so it isn’t done yet…
Connecting state finished! I have finished the connecting/configuring part of the connection. Now when a client tries to connect it goes all the way through the configuring state, which includes the registry & tagged registry packets (which there are a lot of) and then the client accepts all of them then transfers into the playing state! Now all is left to do is make the actual playing server instead of connection hell
Play setup is almost done After the server sends the login packet it sends a whole bunch of packets to the client to finalize some things to make sure everything is good. It adds player datas, teleport the player somewhere, preps the client for chunk loading, sets the time, etc After all that finishes then the client will say that it has loaded and then we can exchange packets of interacting with the environment, and loading new chunks, etc
2 main threads, Server.py and World.py I have now made a main.py that spawns server.py and has it run all the same code as before, connecting clients, and IOing the packets in and out. But now there is World.py which is a class that runs the world, accept player connections, and will do all of the packet creation and queuing after the client fully connects to the world More packets I added a bunch more optional packets for extra info, and more will be on the way
misc preloaded into world packets I made the server send a bunch of packets for extra info about the world before loading in. I also make a region file handler to get chunk & subchunk data in nbt format. Issues Currently idk how to write the level_chunk_with_light packet and it always says 14KB or 22KB of extra data, i need to look into it Also for some reason the player’s game crashes when they move (but not look around) due to ticking entity or something. I will also need to investigate this I’mma take a break from this as school has started recently, ive been spending so much time on this, and the chunk roadblock makes me very demotivated
FINALLY GOT CHUNKS LOADING Okay so i figured out what the heck bit sets were (they’re arrays of bits, or i saved them as an array of bools) and so I was able to make the lighting data needed to render stuff, and that also fixed my player not rendering! When loading just 1 chunk it doesn’t render, it needs to be surrounded by other chunks so here is me loading a 3x3 chunk area, and as you can see the middle one has rendered. The chunks right now are all stone and FULL 15 brightness on blocks & skylight everywhere. I soon will import the actual light data and the actual block data, i just need to figure out where the global block state palette is and not the global block palette!
Real chunks decoded & rendering!! I have managed to decode a bunch of chunks!(pictued is a 3x3 area rendered because of a 5x5 area thats loaded) I still have set the blocklight and skylight to all 15s and i will probably need to go and fix that in a bit later, but for now it just copies over the palette from the global block state palette, copies over the longs for the biome data + palette. For the most part it just copies over the nbt data into bytes and packages it up. It also makes up data, like it also says theres 16^3 (the maximum) blocks in each subchunk. This is to prevent it from unrendering when breaking stuff Todo: I want to load a bunch more chunks to make it more seamless I want to properly give the lighting data, but ill do that later as it works fine for right this second I want to make sending synchronized registries faster and possibly cache the packets that send them
Cached chunk packets After a chunk is requested into a packet i cache it for later. This system is prone to breaking if the synced registries for each player aren’t the same but im hoping to make sure they are the same. (I also want to precompute these and or cache them) I experimented with a bunch of precomputing and caching and seemingly for now just saving the packet data after computing it once on load seems to work just fine for me right now
Migrated to SyncedRegistry instead of clientObj.registries So I’ve make a SyncedRegistry class and had it do all the wonderful things client.generateAndSendRegistryData would create for them, I then removed the client.registries and make all references to it use Registry.getSyncedRegistry() and if they needed to get the all the entries and not just one specific one, they can call .getEntries() on that synced register This change will improve load times & syncability between players. All players will have the same registry data so I can save the chunk packet bytes for that. (it also means i can generate chunk packet bytes w/o needing a reference player and STILL get the biome data correct) The world on init preloads all the required registries needed and that improves join time. Next I need to do the same for the tags data because that is the one that takes up the most time, and caching that would be so great. Also i want to resolve more PLAY packets so my server can be more feature complete, but rn it looks very good and I might ship it and use it for my minigame server soon
Caching tags works! Sub 5 second loading times now! (after the pregeneration is done that is) I moved the tag generation into a class inside of Registry.py and it caches. So after everything generates for the first time loading into the world takes less than 5 seconds!! I’m very proud of how this has turned out so far. I gonna work on some play packets, write a readme, then ship
Automatically loading chunks Chunks now automatically load when you walk by them. its based on the render distance so when i move it tries to send all the chunks in a radius around the player to them. I also fixed a niche bug, that when there is 1 byte left in a packet after reading it could cause the packet to say it is fine with reading the rest & drop off the last byte, but now it is fixed! Next I want to import the definitions for a bunch of the play packets (mostly server bound packets) and then polish up my code and do any todo items and then ship. after shipping ill make a fork and work on my lce minigame server
Working towards being feature complete! I implemented some more play packets. While they are not 100% functional the server can recognize them and forward it to the world to be handled/implemented later when the times comes. The client is now a subclass of the entity class, making things a bit easier. As mentioned above, the client, when receiving a packet response from handling a packet, it could be of a server packet response type, which then the client routes it’s responses directly to the server/world for handling. Also now on startup we print out the completeness of the server. It just measures how many of the server bound packets we have implemented. I will work on making a client bound completeness print after finishing (mostly) the server bound ones, but I assume by time i get there many will be implemented already due to the handling of server bound packets Up next I want to continue implementing more play packets to become more feature complete, also for one of the packets I wrote a write method that took in parameters and returned a fully completed packet, I might need to do that w/ some other packets like the login and player joining ones to make my code smaller on the world.py end and more appropriate on the packets.py end
Rewrote data reader + writers I have rewrote all of the code that wrote and read the packet data. now reading uses a reader class that can just call readbool, readint, etc etc one after another instead of needing to chop off data after each read. Simillarly for the writer I made it so that you can just make a writer and call .writeInt, writebool. etc etc w/o needing to do a += on a bytes object. Next Now that my code is cleaned up quite a bit, I want to clean it up some more by moving all of the writing functions into their packet class so you can call something like: StatusResponse_ClientBound.write(PARAMS) to make the code much nicer. after that I will add more play packets to get more feature complete
Readme, prepping for ship, and some other changes I made some more packets for moving in a vehicle, paddling a boat, and player right click interations. Just 3 more packets towards feature completeness. Once again they’re just for reading them and telling the world about them, it is up to the user to implement them (kinda) I also made the readme (for the most part) and corrected my writeup on where i got the registries from and fixed my requirements.txt
Chunk Cache Center + small bug fix I have made it so the server will finally send the SetChunkCacheCenter packet whenever you move, just like the vanilla server. Previously this was only send on login, and seemingly stalled my server for no reason when I tried to send it continuously. I found out that the issue was in my WriteVarInt function, where negative values lead to an infinite loop. Now that this is fixed I can send that packet anytime now!!...
|
1792633702.7109745
|
1793238502.7109745
|
|
13425
|
My very own WebOS by @mohan | Stardance
|
mohan
|
0
|
0.68
|
0
|
[]
|
[{"post_id": 9616, "ts": "2026 [{"post_id": 9616, "ts": "2026-06-16T00:43:35Z", "hours": 0.6811, "text": "I mainly focused on the about section, where I have links to some socials as well as a short bio and some projects I’ve worked on."}]...
|
Title: My very own WebOS by @mohan | Stardance
De Title: My very own WebOS by @mohan | Stardance
Devlogs:
I mainly focused on the about section, where I have links to some socials as well as a short bio and some projects I’ve worked on....
|
1792633696.2351546
|
1793238496.2351546
|
|
50539
|
My awesome macropad! by @stabish | Stardance
|
stabish
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @stabish | Stardanc Title: My awesome macropad! by @stabish | Stardance...
|
1792633695.334228
|
1793238495.334228
|
|
27834
|
Frictionless by @Hulu | Stardance
|
Hulu
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Frictionless by @Hulu | Stardance
|
1792633694.4806554
|
1793238494.4806554
|
|
9542
|
Halo Interface: Building the Experiment, Not the D Halo Interface: Building the Experiment, Not the Dashboard by @mtaimur | Stardance...
|
mtaimur
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Halo Interface: Building the Experiment, No Title: Halo Interface: Building the Experiment, Not the Dashboard by @mtaimur | Stardance...
|
1792633693.6548605
|
1793238493.6548605
|
|
50536
|
scrapy by @sammyamd | Stardance
|
sammyamd
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: scrapy by @sammyamd | Stardance
|
1792633692.817351
|
1793238492.817351
|
|
34921
|
NEXUS X2 by @error_mahi_not_found | Stardance
|
error_mahi_not_found
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: NEXUS X2 by @error_mahi_not_found | Stardan Title: NEXUS X2 by @error_mahi_not_found | Stardance...
|
1792633691.9855678
|
1793238491.9855678
|
|
50535
|
My own site! by @44cristi_ | Stardance
|
44cristi_
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @44cristi_ | Stardance
|
1792633691.1195948
|
1793238491.1195948
|
|
20704
|
Untitled by @ArjunCodess | Stardance
|
ArjunCodess
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Untitled by @ArjunCodess | Stardance
|
1792633690.2914612
|
1793238490.2914612
|
|
50534
|
GregCo Auxiliary Keypad of Greatness!!! by @GregTh GregCo Auxiliary Keypad of Greatness!!! by @GregTheGregerino | Stardance...
|
GregTheGregerino
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: GregCo Auxiliary Keypad of Greatness!!! by Title: GregCo Auxiliary Keypad of Greatness!!! by @GregTheGregerino | Stardance...
|
1792633689.4547863
|
1793238489.4547863
|
|
31874
|
Robotic Arm by @hadeedtheegg | Stardance
|
hadeedtheegg
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Robotic Arm by @hadeedtheegg | Stardance
|
1792633688.6340625
|
1793238488.6340625
|
|
50533
|
Ninja game by @SchrodingersCat | Stardance
|
SchrodingersCat
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: Ninja game by @SchrodingersCat | Stardance
|
1792633687.8086076
|
1793238487.8086076
|
|
3260
|
My awesome macropad! by @witzmanjk | Stardance
|
witzmanjk
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My awesome macropad! by @witzmanjk | Starda Title: My awesome macropad! by @witzmanjk | Stardance...
|
1792633686.9642153
|
1793238486.9642153
|
|
50532
|
My own site! by @Kurai | Stardance
|
Kurai
|
0
|
0.0
|
0
|
[]
|
[]
|
Title: My own site! by @Kurai | Stardance
|
1792633686.1255846
|
1793238486.1255846
|