You are browsing as a guest. Sign up (or log in) to start making projects!

Sabrina

@Sabrina

Joined June 1st, 2026

  • 51Devlogs
  • 8Projects
  • 5Ships
  • 60Votes
THE #1 Beach Bunny fan in the world (don't fact check this, it's true)
Open comments for this post

17m 24s logged

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

0
0
12
Open comments for this post

3h 24m 8s logged

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

0
0
18
Open comments for this post

1h 53m 7s logged

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

0
0
7
Open comments for this post

1h 15m 3s logged

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

0
0
80
Open comments for this post

3h 44m 36s logged

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!

1
0
93
Open comments for this post

6h 2m 31s logged

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

0
0
14
Open comments for this post

3h 36m 2s logged

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

0
0
10
Open comments for this post

50m 35s logged

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

1
0
164
Open comments for this post

2h 7m 5s logged

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

0
0
9
Open comments for this post

4h 53m 56s logged

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…

2
0
72
Open comments for this post

3h 31m 45s logged

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.

0
0
11
Open comments for this post

1h 35m 1s logged

Hate messages/speech

Over the past few days ive been waking up to some transphobic messages left in my guestbook and so Ive have decided to go on and add a filter to my guestbook.
If I detect a black listed word (currently the 2 trans slurs and the f slur) it will auto sort it into the filtered webhook and makes sure it never saved that message to my server.
Also I have created a honeypot webhook as well so it will put any honeypot messages into there and the reason for it. Hopefully it’ll help me understand what some spammed messages would look like
Still, if I receive any hateful, bigoted, transphobic, queerphobic, and other fucked up messages I WILL be deleting them!! (so please dont send them)

How my guestbook works

Also since I saw someone ask in my voting response about how the guestbook works and if its a static website I have answers for you!
I made a server hosted on nest (so free for us hackclubbers) that receives POST requests when you fill out the form and does all the checks and stuff, then saves it to a json file.
When you load my website it will automatically ask the same server for the contents of the json file and display all the messages! (Now with 100% less bigotry)

Ok love you guys stay safe out there

0
0
5
Ship

I made a BASIC interpreter + old school recreation of the teletype to interface with it on the main server!
The most challenging part of making the interpreter was a pratt parser for doing math operatoins, but after a while i just gave up and used eval to do it for me
The most challenging part of the backend+frontend is getting the api.py to spawn in terminal.pys and talk with them
You SHOULD go look at the specified pages in the manual to know how to use the teletype, maybe a bit on what commands there are and to write a sample program, then also if you get errors look at the 2nd manual

  • 9 devlogs
  • 22h
  • 19.04x multiplier
  • 425 Stardust
Try project → See source code →
Open comments for this post

5h 4m 22s logged

DONE!!! Finally! (hopefully)

I’ve done a bunch of bug hunting and working on the frontend in the past 5 hrs of work,,, so here is the breakdown

Frontend website

I created the frontend for the BASIC interpreter in the “style” of the Dartmouth by adding a CRT effect in CSS
I also made an input thingie from scratch to take keyboard inputs and put them on the screen, all capital letters, and (ctrl+)backspace, spaces, and enter works!
The frontend also connected to the backend API.py via a websocket

Actual interpreter code

I basically just added a case for divide by zero, which results in +infinity (which is ~5.78960e76)

Backend

I took the basis of the communicate.py and turned it into a class and gave one to each client that connected to the websocket server, created using websocket_server

Thats about it I think, i just need to put the server on nest and then change the api url to the prod url and upload the website on netlify

0
0
12
Open comments for this post

2h 54m 50s logged

Over the course of yesterday night and this afternoon I created a python file that spawns terminal.py as a subprocess and it will communicate with it.
This is the first step in creating a websocket, connecting to it, and having an abstracted interface with terminal.py w/o needing to port the interpreter to javascript. I can connect to a websocket server and use the terminal.py from my browser client

0
0
10
Ship ✨ Blessed

I added 3 new apps to my website!!
1st-ly a guestbook, as most good indie sites should have. I made the api myself and it is running on nest. Please dont spam it,,, but feel free to leave positive messages or constructive criticism there! I WILL read it

2nd-ly a visitor counter + flag collector using flagcounter.com Everytime someone visits my site and loads the image it will count the user and we can all see how far around the globe my website has reached! (Can we get every single country?? 👀)

3rd-ly a countdown until android becomes a lockdown platform in 2027, provided by keepandroidopen.org

Also along the way I applied and was accepted into many webrings. At this moment im in the following:

  • transing the internet
  • hotline webring
  • html energy webring
  • cd ring
  • vocaloid webring
  • the no ai webring
  • wii ring
    I’m probably gonna reorganize the ordering of the webring since it is currently in the order i joined, and not in the order of which i like the most

if you know of a swedish webring (that isn’t the eurowebring) or a swedish speaking/learning webring let me know i want to join!! Or we can start one, either is fine!!

  • 4 devlogs
  • 6h
  • 11.35x multiplier
  • 86 Stardust
  • WebOS 2
Try project → See source code →
Open comments for this post

35m 30s logged

I was added to the vocaloid webring, no ai webring, and the wii ring!! I also added my 3rd new app (for webos 2) where it shows the countdown until android become a lock-down platform
I also added a visitor count to see who all joins, and to collect flags for each new country that visits, currently im at 22 w/ the rankings being the US, France, Germany, Argentina, China, and Switzerland, then the other 16 flags have only appeared once

Thats about it for right now, hopefully ill add some more cool information later, byeeee

0
0
21
Open comments for this post

3h 15m 3s logged

I organized my webrings into joined and applied! Currently im in 5 atm, transing the internet, hotline ring, html energy, cdring, and the vocaloid webring

I also created a guestbook completely from scratch!
Source code at /guestbook
I had to add 2 antibot measures
#1) a honeypot field. a field that humans cannot see. off screen very far away, but if a webscraper sees it, it will fill it out and then my server will see that and ignore it
#2) human only answerable question. I made the question be a part of the website that everyone visiting will find out, and so answering this question will be lightwork for anyone with at least 10 braincells, but a web scraper will (hopefully) have no clue

Oh also my guestbook sends a discord message via a webhook everytime someone writes in it, so I can see every new entry w/o needing to look at my website every hour

next i kinda to add a live chat. rtc or something? It’ll be like a guestbook only I can respond to people to make feel more connected

0
0
10
Open comments for this post

1h 42m 18s logged

I finally made a button!
I added a robotx.txt and ai.txt to block web scrapers for LLMs
I also applied to all the webrings i had previously, and added new webrings i found!
Feel free to comment your website and i’ll check it out, and maybe add you to my net neighbors
Next I want to make a guest book (from scratch?)

The new webrings i added were:
hotline webring
DS Ring
DroidRing
IndieRing
Computering Webring
HTML Energy Webring
Webmaster Webring

0
0
11
Loading more…

Followers

Loading…