My personal website emmeline.tngl.io/
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

updates

Emmeline 47e464f7 9c4c0837

+381 -177
+11 -6
components/nav.html
··· 1 1 <nav> 2 - <ul> 3 - <p><a href="${site.urls.index}">${site.titles.index}</a></p> 4 - <p><a href="${site.urls.about}">${site.titles.about}</a></p> 5 - <p><a href="${site.urls.contact}">${site.titles.contact}</a></p> 6 - <p><a href="${site.urls.projects}">${site.titles.projects}</a></p> 7 - </ul> 2 + <p> 3 + <span><a href="${site.urls.index}">${site.titles.index}</a></span> 4 + - 5 + <span><a href="${site.urls.about}">${site.titles.about}</a></span> 6 + - 7 + <span><a href="${site.urls.contact}">${site.titles.contact}</a></span> 8 + - 9 + <span><a href="${site.urls.projects}">${site.titles.projects}</a></span> 10 + - 11 + <span><a href="${site.urls.thoughts}">${site.titles.thoughts}</a></span> 12 + </p> 8 13 </nav>
+17
main.pup
··· 1 1 let paw = import("paw"); 2 2 3 + _pg_thought(id: str, title: str) = [ 4 + id: id, 5 + url: strings.cat(["/thoughts/", id]), 6 + page: strings.cat(["thoughts/", id, ".html"]), 7 + title: title 8 + ]; 9 + 3 10 let pages = [ 4 11 [ 5 12 id: "index", ··· 25 32 page: "projects.html", 26 33 title: "Projects" 27 34 ], 35 + [ 36 + id: "thoughts", 37 + url: "/thoughts/", 38 + page: "thoughts/index.html", 39 + title: "Thoughts" 40 + ], 41 + _pg_thought("cplusplus", "C++"), 42 + _pg_thought("forge-vs-fabric", "(Neo)Forge vs Fabric"), 43 + // _pg_thought("ipads-brainrot-and-socialmedia", "iPads, Brainrot, and Social Media"), 44 + _pg_thought("modern-minecraft", "Modern Minecraft"), 28 45 ]; 29 46 30 47 let friend_buttons = [
-4
pages/about.html
··· 14 14 <li>My favourite colour is yellow.</li> 15 15 </ul> 16 16 17 - <br> 18 17 <h3>Interests & Hobbies</h3> 19 18 <hr> 20 19 <div> ··· 22 21 <p>I especially enjoy game development and interpreter/compiler development.</p> 23 22 <p>My favourite programming language is C.</p> 24 23 25 - <br> 26 24 <h4>Gaming</h4> 27 25 <p>I quite enjoy precision-focused games, including rhythm games, boomer shooters, and bullet hells.</p> 28 26 <p>I thoroughly enjoy games that give me a challenge. I don't want to win on the first try! I want to claw my way to victory and see my skills improve.</p> ··· 44 42 <p>Hours: Just over 130 hours on my player.</p> 45 43 </details> 46 44 47 - <br> 48 45 <h4>Music</h4> 49 46 <ul> 50 47 <li>EDM+subgenres - dubstep, breakcore, speedcore, etc. (Camellia, hkmori, eightiesheadachetape, and Tanger)</li> ··· 87 84 </ul> 88 85 </details> 89 86 90 - <br> 91 87 <h4>Reading</h4> 92 88 <p>I mainly enjoy dystopian, high fantasy, and sci-fi novels.</p> 93 89 <ul>
+13 -4
pages/index.html
··· 1 1 <h2>Hiya, I'm Emmeline!</h2> 2 + <hr> 2 3 3 4 <p>I'm a programmer interested in language and game development.</p> 4 5 <p>I'm quite friendly and thoroughly enjoy making friends. Please feel free to contact me!</p> 5 6 <p>Nicknames: May, Emma</p> 6 7 7 - <br/> 8 + <h3>Domains</h3> 9 + <hr> 10 + <ul> 11 + <li><a href="https://emmelinecoats.com/">emmelinecoats.com</a> - Personal website</li> 12 + <li><a href="https://girlkisser.top/">girlkisser.top</a> - Personal webapps and services</li> 13 + <li><a href="https://kera.place">kera.place</a> - Unused for now; I will be putting my world-building project here in the (near) future.</li> 14 + </ul> 15 + 8 16 <h3>Software I Use</h3> 17 + <hr> 9 18 <p>Desktop:</p> 10 19 <ul> 11 20 <li><a href="https://alpinelinux.org">Alpine Linux</a> (Operating System)</li> ··· 42 51 <li><a href="https://lua.org/">Lua</a></li> 43 52 </ul> 44 53 45 - <br/> 46 54 <h3>Cool Albums & Playlists</h3> 55 + <hr> 47 56 <p>Peak music that you should listen to.</p> 48 57 <p>All links to YouTube. Tracking has been removed from the URLs (<code>&si=...</code>).</p> 49 58 <ul> ··· 52 61 <li><a href="https://youtu.be/RDRycy6_WKE">ESTR0GEM - <em>Worm Party On Sunday</em></a> - HOW ARE THERE ONLY 516 VIEWS AND 378 SUBSCRIBERS??? Please go listen and support ESTR0GEM!</li> 53 62 </ul> 54 63 55 - <br/> 56 64 <h3>Cool Sites</h3> 65 + <hr> 57 66 <p>A collection of cool sites I've found.</p> 58 67 <ul> 59 68 <li><a href="https://neomojimixer.com/">Neomojimixer</a> - Neomoji Creator</li> ··· 63 72 <li><a href="https://flexbox.malven.co/">Flexbox Cheatsheet</a> - Visual cheatsheet for Flexbox, I use this every time I use flexboxes.</li> 64 73 </ul> 65 74 66 - <br/> 67 75 <h3>Buttons</h3> 76 + <hr> 68 77 <p>My Circle:</p> 69 78 ${site.buttons.friends} 70 79 <p>Misc:</p>
+1 -1
pages/projects.html
··· 2 2 <hr> 3 3 4 4 <p>My old projects are scattered between different Git forges, but my new repos are kept primarily on Tangled.</p> 5 + <p>I'm only listing my "primary" projects here. I do work on a handful of other things, just not as often as these.</p> 5 6 6 - <h3>Primary Projects</h3> 7 7 <table> 8 8 <tr> 9 9 <th>Name</th>
+53
pages/thoughts/cplusplus.html
··· 1 + <h2>Thoughts on C++</h2> 2 + <a href="${site.urls.thoughts}">Back to thoughts</a> 3 + <hr> 4 + <p>I despise C++ for a lot of reasons. I have some reasons that are opinionated and others that are... less so.</p> 5 + <p>I'll start with the more opinionated points, then go to the points I believe are more objective.</p> 6 + <p>Additionally, these are *nitpicks*. A lot of small issues add up to a big issue, in my opinion.</p> 7 + 8 + <h3>Syntactic Shortcomings</h3> 9 + <hr> 10 + <p>This is one of the more common reasons that people dislike C++, and for good reason. C++ has a lot of really weird syntaxes that are questionable at best. The main example I think of is the abysmal syntax for writing a line to stdout:</p> 11 + <code>std::cout << "Hello, World!" << std::endl;</code> 12 + <p>Why... why the heck did anyone think that it was a good idea to use a left bitshift operator overload for this... Even disregarding the syntax, this is also just flat out bad practice in my opinion. I'll get to that when I talk about operator overloads.</p> 13 + <p>Technically this isn't part of the syntax as much as it is the stdlib, since this is just an operator overload on an iostream. However the syntax of the language follows a similar style. The difference between a class and a struct, for example, is just the default access modifier. This is... weird to me, why don't you just use the struct keyword and add method support to it? Or better yet, don't even touch struct and leave it as a basic data structure instead of making it an OOP structure by default.</p> 14 + <p>Edit: C++23's <code>std::println</code> is MUCH nicer, though I feel like it probably should have been part of </code>&lt;iostream&gt;</code> instead of a new header, </code>&lt;print&gt;</code>. This is just a nitpick, though.</p> 15 + 16 + <h3>Templates fit for a King- er- Turing Machine</h3> 17 + <hr> 18 + <p>Okay don't get me wrong, I love polymorphic programming via templates. What I don't like is the complexity of C++ templates. Ever wanted <a href='https://stackoverflow.com/questions/189172/c-templates-turing-complete/'>turing complete</a> templates?</p> 19 + <p>A template for the purpose of polymorphism only needs a type parameter or two, i.e, <code>template &lt;typename T&gt;</code>. Everything else would be used in things other than polymorphism more often than not, and at that point I don't think a template is the right tool for the job.</p> 20 + <p>C++ templates are certainly powerful. They're just... a bit *too* powerful in my opinion.</p> 21 + <p>A double-whammy on templates and syntax: it took the C++ committee 32 years to improve the parser spec to parse <code>&gt;&gt;</code> properly in nested templates (C++11).</p> 22 + 23 + <h3>Can Bitshifts Write Data? (Operator Overloading)</h3> 24 + <hr> 25 + <p>This isn't unique to C++, but I'm including it here due to the atrocities of the left bitshift ("stream write") operator overload. The right bitshift ("stream read") operator is also equally terrible.</p> 26 + <p>Operator overloading makes it harder to tell what's going on under the hood. For a language that's built on C, I don't like being able to mask code like that. Of course I can always just jump-to-source, but the beauty of C to me is that I can look at any line and have a really good idea of what the ASM output will look like. In C++, as soon as I use an operator on a custom type from a library **or even the language's own standard library**, I don't know what that ASM could look like, and there could very well be a side-effect too that I didn't know about.</p> 27 + 28 + <h3>Memory "Safety"</h3> 29 + <hr> 30 + <p>C++ provides a variety of different pointer types, <code>shared_ptr</code>, <code>unique_ptr</code>, <code>weak_ptr</code>... they're all useless in my opinion. This could just be me being used to C pointers, but I really don't think that having different types of pointers is necessary. Feel free to disagree with me here, I won't judge you for that ;P</p> 31 + <p>I've met a lot of people who use C++ because they believe it's more safe than C (especially people new to it), when in reality there are *more* pitfalls in C++ than in C. You can easily misuse a pointer type, use the wrong cast (C-style casts are different than C++-style casts), or leak memory just like in C. C++ is *not* safer than C, and the false sense of safety that beginners tend to have doesn't help.</p> 32 + <p>Now I will mention that when used right, C++'s extra pointer types are incredibly useful. I personally dislike the concept of having multiple pointer types (to an extent. See Puppy's differentiation between managed and unmanaged pointers, for example), but even then they have a strong use case.</p> 33 + 34 + <h3>The Standard Library</h3> 35 + <hr> 36 + <p>I'm no stranger to bad standard libraries. But C++'s really stands out from the rest because it's just *that* bad.</p> 37 + <p>The stdlib of C++ took: (C++ was created in 1979, for reference)</p> 38 + <ul> 39 + <li>32 years for a hash map implementation (<code>std::unordered_(multi)?(set|map)</code>, from C++11). This one I can understand *to an extent* since C also doesn't provide a hash map implementation. On the other side, std::vector was implemented in C++98.</li> 40 + <li>38 years for a simple function to check if a path exists (<code>std::filesystem::exists</code>, from C++17). Previously you had to use <code>sys/stat.h</code> just like in C.</li> 41 + <li>44 years for a simple print function (<code>std::println</code>, from C++23)</li> 42 + </ul> 43 + <p>Additionally, the C++23 spec (<a href='https://www.iso.org/standard/83626.html'>ISO/IEC 14882:2024</a>) is... 2104 pages. Two THOUSAND pages. The C23 spec (<a href='https://www.iso.org/standard/82075.html'>ISO/IEC 9899:2024</a>) is 758 pages. I don't have many other specifics on this since you have to *buy* the PDFs to read them, thanks ISO (sarcastic).</p> 44 + <p>Obviously some of the spec is the syntax and such too, however a lot of it is also going to consist of the standard libraries. I would get numbers for how many pages correspond to each language's respective standard libraries, but I'm not about to fork out over almost $553.30 USD to buy each spec for that.</p> 45 + <p>For reference: both the C++23 and C23 document cost 221 Swiss Franc (236.39 EUR or 276.65 USD as of 07/07/2025). I.e, $553.30 USD to get both. The links above for the ISO/IEC are to the ISO pages where I got the price and the page counts.</p> 46 + 47 + <h3>"C++ is just better C"</h3> 48 + <hr> 49 + <p>C++ and C are *fundamentally* different languages. C++ aimed to add an OOP paradigm to C, which completely changes how you go about writing code using the language. Their standard libraries are vastly different too. C provides what you *need*, C++'s is sugar on top.</p> 50 + 51 + <h3>Note</h3> 52 + <hr> 53 + <p>This page *is* intended for me to explain why I dislike C++, but it is *not* me intending to diss those who use C++. It's a perfectly capable language and I have absolutely zero judgement for anyone who uses it. I just happen to have plenty of judgement for the language itself.</p>
+89
pages/thoughts/forge-vs-fabric.html
··· 1 + <h2>Thoughts on (Neo)Forge vs Fabric</h2> 2 + <a href="${site.urls.thoughts}">Back to thoughts</a> 3 + <hr> 4 + 5 + <p> 6 + This is one of my hotter takes. I think that 7 + (Neo)Forge and Fabric are equally bad/good mod 8 + loaders. 9 + </p> 10 + <p> 11 + People often say that Fabric is the "lighter" 12 + loader, but in reality that's very much not the 13 + case anymore. They both have a plethora of 14 + performance mods, and most of them are xplat now 15 + too. Forge performance especially improved post 16 + 1.15, and the two basically launch and run at the 17 + same speed in most cases. 18 + </p> 19 + <p> 20 + Edit: I've been talking with someone who claims 21 + that Fabric has better *server* performance. I 22 + don't ever mess with servers, so I can't really 23 + comment on *my* views for this, but I did want to 24 + mention this at the very least. I'm assuming that a 25 + large part of this performance difference would be 26 + due to the Forge EventBus. Pub/sub is cool but 27 + usually lacks in performance to my knowledge. 28 + </p> 29 + <p> 30 + I also see people saying that Fabric is lighter 31 + because it doesn't package the library with it. The 32 + Fabric API is packaged into many smaller modules, 33 + which I've seen people jar-in-jar before (Sodium 34 + JiJs part of the library). This is utterly stupid, 35 + *every* single modpack on Fabric is going to use 36 + FAPI, meaning that JiJ'ing it is just wasting 37 + resources. Additionally, excluding the API really 38 + doesn't affect the heaviness of the loader at all. 39 + </p> 40 + <p> 41 + Though my major issue with FAPI is the modular 42 + structure of it. Sure, a modular structure is 43 + nice... until you think about the fact that it's 44 + distributed monolithically for users *and* 45 + developers. Nearly every Fabric developer depends 46 + on the whole FAPI and not modules since it's a 47 + million times more convenient. The API being split 48 + into multiple modules just feels really annoying to 49 + manage. Then again, I don't work on the FAPI, so I 50 + could very well be mistaken on the 51 + ease-of-development benefit that may or may not 52 + exist. I'd love for a FAPI developer to get in 53 + contact with me to comment on the modular structure 54 + of it. 55 + </p> 56 + <p> 57 + As for (Neo)Forge, I also think that it has issues. 58 + Notably, the event bus... I don't like "magic code" 59 + (macros, annotations, etc), and the Forge event bus 60 + is literally that. I *do* however like that the 61 + event bus provides events for most of the places 62 + where I would otherwise need to mixin, which means 63 + that mod compatibility is much easier. On the other 64 + hand, there are great tools for developing mixins 65 + now (mc-dev and mods such as mixin trace), which 66 + help significantly... until someone decides to 67 + <code>@Overwrite</code> where they REALLY didn't 68 + need to. That's a different issue though. 69 + </p> 70 + <p> 71 + In terms of modding, both loaders are equally 72 + bad/good, and it's really just personal 73 + preference. I primarily mod on NeoForge since 74 + that's where I have the most experience and am most 75 + comfortable, but I can develop on Fabric too. 76 + </p> 77 + <p> 78 + In terms of modpacking, NeoForge has more potential 79 + right now *in my opinion*. Connector helps 80 + significantly in this, however opposite projects 81 + such as Kilt may make each loader perfectly 82 + balanced (as all things should be /reference). 83 + Ultimately, when I am modpacking, I use whichever 84 + loader provides the core mods for my modpack. I.e, 85 + if I'm making a tech pack around GTCEuM, I'll use 86 + NeoForge 1.21.1, since that's the version that the 87 + mod targets. For a Spectrum pack, I'll use Fabric 88 + 1.21.1 for the same reason. 89 + </p>
+10
pages/thoughts/index.html
··· 1 + <h2>Thoughts</h2> 2 + <hr> 3 + 4 + <p>I often find myself explaining my opinions repeatedly, especially my "hot takes." I made this part of my website to explain those in one place so that I don't have to retell them so often.</p> 5 + <p>Here are some of my thoughts on different topics:</p> 6 + <ul> 7 + <li><a href='${site.urls.thoughts}/cplusplus/'>C++</a></li> 8 + <li><a href='${site.urls.thoughts}/modern-minecraft/'>Modern Minecraft</a></li> 9 + <li><a href='${site.urls.thoughts}/forge-vs-fabric/'>(Neo)Forge vs. Fabric</a></li> 10 + </ul>
+79
pages/thoughts/modern-minecraft.html
··· 1 + <h2>Thoughts on Modern Minecraft</h2> 2 + <a href="${site.urls.thoughts}">Back to thoughts</a> 3 + <hr> 4 + <p>I have pretty strong opinions on Minecraft and how it's changed over time. I first started playing it 12 years ago (as of 07/07/2025), so maybe a lot of this is just nostalgia talking, but I do have misc opinions on modern Minecraft that very much are not nostalgia-led.</p> 5 + <p>As you're reading this, I can almost guarantee you will disagree with a lot of my points, maybe even all of them. So be it, I'm not here to change your opinion, I'm here to express mine. If you do disagree, feel free to contact me and explain but if you contact me saying something like "your opinions on modern minecraft are wrong" then I'm going to ignore you. Opinions are subjective, suck it up and deal with it.</p> 6 + 7 + <h3>It's a sandbox... right?</h3> 8 + <hr> 9 + <p>After Microsoft's acquisition of Mojang, I noticed that the updates started to... slowly lose the creative feeling of Minecraft.</p> 10 + <p>The game is advertised as a sandbox, exploration, and crafting game. And it does very well at those, although the recent updates have started moving away from some of these aspects and aiming for a much more RPG-feel.</p> 11 + <p>Don't get me wrong, I love RPG games. I love being thrown into a fantasy world and playing the role of a hero, learning about the world, and defeating the final boss. But I also like sitting back, relaxing, and building a cute house. Minecraft does very well at the relaxing part... unless I'm in a modern version.</p> 12 + <br> 13 + <p>Take 1.14, the Village & Pillage update (aka the Texture Update). This update is *very* clearly RPG. Looking at the additions for the sandbox feeling of the game... there are not too many. I mean, new variants for signs and walls are cute, and I love the Cornflower and Lily of the Valley. But the *majority* of the update is pretty clearly RPG.</p> 14 + <br> 15 + <p>How about 1.15. On a surface level, this update seems like just bees, which are adorable and I'm a huge fan of. Below the surface, though, were a LOT of bug fixes and internal changes. The internal changes are why the major version was incremented. Ultimately, this update has no RPG-like content and really just made farming a little more interesting. I quite like this update.</p> 16 + <p>You might remember that I claimed Mojang got "lazy" with this update, though after a *lot* of people flaming me on this, my opinion on it has changed. I was unfair to Mojang with this critique, but I'll leave the original here so you can understand *why* I was flamed for it.</p> 17 + <details> 18 + <summary>Original Critique (no longer my opinion!)</summary> 19 + <p>How about 1.15... oh wait... Mojang got lazy on that update (remember this, it's a common trend that I will cover later). Bees are adorable, I'm a fan of them. This update was good, although definitely not deserving of a major version increment.</p> 20 + </details> 21 + <br> 22 + <p>1.16... how do I even start... 1.16 is when the game started taking a turn for the worse in my opinion. Yes, the Nether *definitely* needed an update, but there are MAJOR issues with this version. Primarily...</p> 23 + <p>Netherite. Netherite is *obnoxiously* rare. If I want to say, gather every item, or get maxxed out tools, or anything else, now I need to grind for actual real life HOURS to get even 1 or 2 Netherite tools/armour. This is insane, genuinely insane. Diamonds are rare, sure, but you'll find a good many within 1 hour. Netherite though... I've spent 2 hours mining for it and found nothing. Not to mention you need to find FOUR of the ores to get ONE ingot to upgrade a SINGLE tool/armour piece.</p> 24 + <p>*Ignoring* Netherite, 1.16 is a pretty solid update. Tons of new unique building blocks that aren't intrusive. It made the Nether just a little bit more enjoyable to explore.</p> 25 + <br> 26 + <p>Now for 1.17. Overall, this update was not bad, I do genuinely like it. I have no negative comments about it.</p> 27 + <p>oh wait. Mojang said that they had to split this update because it was too big. If an update is out of scope, *don't announce it all at once.* Mojang made a huge blunder with this update in that sense, and it caused them to keep adding "new" content in the subsequent updates to add the features that were promised from this one.</p> 28 + <br> 29 + <p>1.18! Now we actually get the world generation promised in 1.17. Thanks Mojang (sarcastic).</p> 30 + <br> 31 + <p>1.19... oh god. Alright this update REALLY caused a nosedive for my enjoyment of modern versions. The swamp is cool, frogs and Allays are cute. Here's the issue: The Deep Dark.</p> 32 + <p>The Deep Dark does not, in any way, shape, or form, fit Minecraft. This isn't even something that can be argued, looking at the update trends in the 1.12 and previous versions, *nothing* alluded to adding mobs that were almost unkillable, would nearly one-shot you if you **made too much noise**, and had basically no useful loot. The Deep Dark punishes you for playing the game. It's not a "fun challenge" either, I have to play with keep inventory or in peaceful mode in the Deep Dark because I don't want to get instakilled because I was walking in the wrong place. The Deep Dark is also huge. Don't believe me? Download a minimap mod and open the cave map on the lower Y-levels. You'll find a Deep Dark, and it'll be *big*.</p> 33 + <p>There is absolutely no reason to punish the player for mining. That's stupid, completely stupid. If the Warden spawned solely in the Ancient Cities and the Deep Dark weren't so enormous, *maybe* I could enjoy this update. But the way that Mojang went about this update brings me no joy.</p> 34 + <p>Oh and we also got more features previously promised from 1.17! Thanks Mojang (sarcastic).</p> 35 + <br> 36 + <p>Alright now for 1.20.</p> 37 + <p>1.20 also introduces one of the single WORST items: Netherite Upgrade Templates. Remember when I said that 1.16's Netherite really annoyed me? Yeah they made it worse. Now you have to go to Bastions to find Upgrade Templates to upgrade your gear. Remember how it would take hours to find Netherite? Yeah now you need to also spend more hours grinding Bastions hoping to find an upgrade template. Luckily you can duplicate them!... using 7 diamonds. What the heck???</p> 38 + <p>So let me spell this out real quick: A "relaxing sandbox game" now wants you to spend actual hours of your time (perhaps multiple real life DAYS) grinding to find Netherite, an Upgrade Template, AND metric tonnes of diamonds just to get a SINGLE set of Netherite gear. What part of that is relaxing??? Mining in the Nether certainly isn't relaxing, it's nightmarish. Mining in the Overworld isn't relaxing anymore either thanks to the Deep Dark taking up dang near half of the world.</p> 39 + <p>In terms of what *good* came from 1.20, Cherry Blossom trees are cute. That's the only part of this update that I really like.</p> 40 + <p>Oh and we also got more promised features from 1.17 (archeology). Thanks Mojang (sarcastic).</p> 41 + <br> 42 + <p>Alright now for 1.21. This update REALLY annoys me. Trial Chambers?? What part of this is relaxing sandbox. Okay cool new building blocks (Tuff and Copper block sets) and automated crafting, but everything else REEKS of not-creativity. Oh and the Mace, a weapon that can one-shot a Warden... I haven't seen this level of power creep since Tearalaments dropped in Yu-Gi-Oh. The Heavy Core is also obnoxiously rare, even more so than Netherite. I haven't seen this level of rarity since starlight rares dropped in Yu-Gi-Oh (I don't care that I made this joke twice).</p> 43 + <p>We also got stuff promised from 1.17 (bundles), is this getting old yet? Anyway, thanks Mojang (sarcastic). (1.21.2: Bundles of Bravery)</p> 44 + <p>To add, the Pale Garden (1.21.4: The Garden Awakens). This is very blatantly just Mojang trying to bandwagon on the Dweller mod trend. The mods from that trend are bad, and the Creaking really isn't that much better. I love the Pale Garden itself, a desolate forest with a fun wood type and resin bricks, sign me up! But the Creaking... not great. I will mention, the Creaking would have fit well into the End with some tweaks. The End desperately needs something to make it a little less boring, and the Pale Garden would have fit in **remarkably** there.</p> 45 + <p>Alright now for the GOOD of 1.21. It's not even from 1.21.0, it's from 1.21.5 (Spring to Life). This update makes the game feel way more alive, I love it! I have no critiques on this version.</p> 46 + <p>Okay, 1.21.6 (Chase the Skies). I'm bittersweet about this update. I've always theorized/headcannoned that the Ghasts came from the Overworld, and seeing that come to life was awesome. But something about this update just feels weird in terms of the Minecraft theme... I'm not sure what it is though, so I'm not counting this as a negative point. I will however mention that Happy Ghasts are hecking adorable, so that is a plus :3</p> 47 + <p>And now 1.21.7... the marketing ploy update... This one just adds references to A Minecraft Movie. It's only a music disc and a painting so I'm not really annoyed by it, but I hope that Mojang doesn't bring their marketing magic from Bedrock to Java... I'll be quick to remove it via a mod if so.</p> 48 + <br> 49 + <p>You might be thinking, "but you can ignore the RPG aspects." And to that I say: Nope. I can't, not when almost half of the modern game is RPG and the recent updates don't add much of interest to me. That's not "ignorable," that's turning a blind eye.</p> 50 + <p>Ultimately what this means is that if I want to play vanilla Minecraft for the sake of relaxing, modern Minecraft just... doesn't sit right for me. Any version before 1.13, heck yeah, but after then... it just doesn't feel like "Minecraft" to me anymore.</p> 51 + 52 + <h3>Textures</h3> 53 + <hr> 54 + <p>Okay so this point is really... *really* subjective. Most people I've talked to about this like the new textures, and yeah, I do too. But unlike most people, I like the older textures more. I like the crunchy and saturated textures, they feel oddly charming.</p> 55 + <p>The new textures don't feel like they have as much love put into them, they feel more dull and less fun to me. I do like them, but they don't give me the same feeling that the old textures do.</p> 56 + <p>This could very well just be nostalgia talking :P</p> 57 + 58 + <h3>"Fixing" the Modern Game</h3> 59 + <hr> 60 + <p>Okay! So I've explained why I don't like the updates, but I do like modding on new versions since there's better tooling and there are lots of amazing mods made for new versions, and since I happen to *be* a modder, I can simply tweak parts of the game that I dislike.</p> 61 + <p>This is a list of what I would change in modern versions via a mod to make it appeal more to me. I do plan to make a mod(pack) using these tweaks in the future, if so then I'll add a link to this page :D</p> 62 + <p>Note that this is not intending to recreate Alpha or Beta in a modern version, it's intending to make the modern version lean way more into the sandbox, exploration, and crafting aspects of Minecraft and remove or tweak a lot of the RPG aspects.</p> 63 + <br> 64 + <ul> 65 + <li>(1.9) Remove Elytra boosting with fireworks. I want to make players build Minecart networks again.</li> 66 + <li>(1.13) Remove Phantoms. Let me be a night owl in peace.</li> 67 + <li>(1.14) Remove raids and Pillager Patrols.</li> 68 + <li>(1.14) Remove Pillager Outposts.</li> 69 + <li>(1.14) Remove or rework Wandering Traders. I think it would be more fun if they didn't just pop up out of nowhere... Also their trades would need to be completely remade so that they're actually worth it.</li> 70 + <li>(1.16) Remove or completely rework Netherite. If I rework it then it will function as an ore found uncommonly/rarely (redstone or diamond rarity) in the Nether that can be used for misc crafting recipes.</li> 71 + <li>(1.16) Remove Netherite tools and armour.</li> 72 + <li>(1.19) Remove the Deep Dark, Ancient Cities, and Warden. Perhaps they can be moved to their own dimension.</li> 73 + <li>(1.20) Remove Upgrade Templates.</li> 74 + <li>(1.21) Remove Trial Chambers.</li> 75 + <li>(1.21.4) Move Pale Garden to be an End Biome.</li> 76 + </ul> 77 + <blockquote> 78 + <p>One of my friends mentioned that moving the Deep Dark into their own dimension would likely be a terrible idea. They said it would create "another End," citing that the End is extremely bland and has almost nothing interesting to it. Moving the Deep Dark to it's own dimension would create another one of these dimensions. I agree with this, and think that just flat-out removing it would likely be better.</p> 79 + </blockquote>
+101 -153
static/style.css
··· 1 + @import url('https://fonts.googleapis.com/css2?family=Onest:wght@100..900&family=Oxygen+Mono&display=swap'); 2 + 1 3 :root { 2 - /* Palette */ 3 - --white: #EFEFEF; 4 - --white-1: #EBE3E4; 5 - --black: #17181F; 4 + /* palette */ 5 + /* greys */ 6 + --p-black: #333333; 7 + --p-grey0: #414141; 8 + --p-grey1: #4a4a4a; 9 + --p-grey2: #4f4f4f; 10 + --p-grey3: #5c5c5c; 11 + --p-grey4: #5f5f5f; 12 + --p-white: #e7e7e7; 13 + /* rainbow */ 14 + --p-red: #faa; /* == light red */ 15 + --p-orange: #fa7; 16 + --p-yellow: #ffa; /* == light-orange */ 17 + --p-teal: #7fa; 18 + --p-green: #af7; 19 + --p-blue: #7af; 20 + --p-purple: #a7f; 21 + --p-pink: #f7a; 22 + /* light rainbow */ 23 + --p-light-red: #faa; 24 + --p-light-blue: #aaf; 25 + --p-light-green: #afa; 26 + --p-light-orange: #ffa; /* == yellow */ 27 + --p-light-purple: #faf; 28 + --p-light-blue: #aff; 6 29 7 - --green: #B7E57F; 8 - --sage: #9FAC6B; 30 + /* colours */ 31 + --c-bg: var(--p-black); 32 + --c-panel-bg: var(--p-grey0); 33 + --c-panel-border: var(--p-grey2); 34 + --c-panel2-bg: var(--p-grey1); 35 + --c-panel2-border: var(--p-grey3); 36 + --c-panel3-bg: var(--p-grey2); 37 + --c-panel3-border: var(--p-grey4); 38 + --c-fg: var(--p-white); 39 + --c-link: var(--p-blue); 40 + --c-link-hover: var(--p-light-blue); 41 + --c-accent: var(--p-light-green); 9 42 10 - --yellow: #FDD307; 11 - --deep-yellow: #FCBC00; 12 - --orange: #DB8007; 43 + /* text */ 44 + --t-font: 'Onest', Arial, serif; 45 + --t-post-font: Garamond, 'Times New Roman', var(--t-font); 46 + --t-mono-font: 'Oxygen Mono', monospace; 47 + --t-h-font: 'Oxygen Mono', var(--t-post-font); 48 + --t-font-weight: 400; 49 + --t-font-style: normal; 50 + --t-font-size: 18px; 13 51 14 - --blue: #06C0DC; 15 - --deep-blue: #059BB3; 16 - --blue-grey: #607A90; 17 - --dark-blue-grey: #066374; 18 - 19 - --pink: #F5C9E3; 20 - --deep-pink: #D6A0C0; 21 - 22 - font-family: sans-serif; 23 - } 24 - 25 - @media (prefers-color-scheme: light) { 26 - :root { 27 - --bg: var(--white); 28 - --fg: var(--black); 29 - --accent: var(--sage); 30 - --link: #0F529A; 31 - --link-hover: #09427f; 32 - } 33 - } 34 - 35 - @media (prefers-color-scheme: dark) { 36 - :root { 37 - --bg: var(--black); 38 - --fg: var(--white-1); 39 - --accent: var(--sage); 40 - --link: var(--blue); 41 - --link-hover: var(--deep-blue); 42 - } 52 + /* layout */ 53 + --l-body-padding: 16px; 54 + --l-body-width: 60vw; 55 + --l-border-width: 2px; 56 + --l-border-style: solid; 57 + --l-border-radius: 0px; 43 58 } 44 59 45 60 html { 46 - background-color: var(--bg); 47 - color: var(--fg); 61 + padding: 0; 62 + offset: 0; 63 + margin: 0; 48 64 49 - display: flex; 50 - align-items: center; 51 - justify-content: center; 52 - } 65 + width: 100vw; 53 66 54 - body { 55 67 display: flex; 56 - align-items: center; 57 - justify-content: center; 58 - 59 68 flex-direction: column; 60 - align-items: start; 61 - justify-content: start; 62 - 63 - gap: 8px; 64 - 65 - width: 70vw; 66 - } 67 - 68 - div.content { 69 - display: flex; 70 69 align-items: center; 71 - justify-content: center; 72 70 73 - flex-direction: row; 74 - align-items: start; 75 - justify-content: start; 71 + background-color: var(--c-bg); 72 + color: var(--c-fg); 76 73 77 - gap: 18px; 78 - 79 - width: 70vw; 74 + font-family: var(--t-font); 75 + font-weight: var(--t-font-weight); 76 + font-style: var(--t-font-style); 77 + font-size: var(--t-font-size); 80 78 } 81 79 82 - main { 83 - width: 60vw; 80 + body { 81 + padding: var(--l-body-padding) 0 var(--l-body-padding) 0; 82 + offset: 0; 83 + margin: 0; 84 + width: var(--l-body-width); 84 85 } 85 86 86 - nav { 87 - width: 10vw; 88 - padding: 8px; 89 - border-right: 1px solid var(--accent); 87 + header { 88 + font-family: var(--t-h-font); 89 + padding-bottom: var(--l-body-padding); 90 90 } 91 91 92 92 footer { 93 - text-align: right; 94 - } 95 - 96 - code { 97 - font-family: monospace; 98 - 99 - padding-left: 4px; 100 - padding-right: 4px; 101 - } 102 - 103 - a, a:visited { 104 - color: var(--link); 105 - 106 - text-decoration: underline; 107 - } 108 - 109 - a:hover { 110 - color: var(--link-hover); 111 - } 112 - 113 - hr { 114 - border-top: none; 115 - border-left: none; 116 - border-right: none; 117 - border-bottom: 1px solid var(--accent); 118 - } 119 - 120 - ul.favourited-list { 121 - list-style-type: none; 122 - } 123 - 124 - ul.favourited-list>li, 125 - ul.favourited-list>li>span { 126 - vertical-align: middle; 93 + font-family: var(--t-h-font); 94 + padding-top: var(--l-body-padding); 127 95 } 128 96 129 - table { 130 - border-collapse: collapse; 131 - } 97 + main { 98 + padding: var(--l-body-padding); 99 + background-color: var(--c-panel-bg); 100 + border: var(--l-border-width) var(--l-border-style) var(--c-panel-border); 101 + border-radius: var(--l-border-radius); 132 102 133 - th, td { 134 - padding: 8px; 135 - border: 1px solid var(--accent); 103 + line-height: 1.6; 136 104 } 137 105 106 + table, 138 107 details { 139 - border: 1px solid var(--accent); 140 - padding: 8px; 108 + padding: var(--l-body-padding); 109 + background-color: var(--c-panel2-bg); 110 + border: var(--l-border-width) var(--l-border-style) var(--c-panel2-border); 111 + border-radius: var(--l-border-radius); 141 112 } 142 113 143 - summary { 114 + details>summary { 144 115 cursor: pointer; 145 116 } 146 117 147 - div.buttons { 148 - display: flex; 149 - align-items: center; 150 - justify-content: center; 151 - flex-wrap: wrap; 152 - gap: 8px; 118 + table td { 119 + background-color: var(--c-panel3-bg); 120 + padding: 0 var(--l-body-padding); 121 + border-radius: var(--l-border-radius); 153 122 } 154 123 155 - .swash { 156 - display: inline-block; 157 - width: 30px; 158 - height: 30px; 159 - border: 2px solid var(--fg); 160 - border-radius: 50%; 124 + h1, h2, h3 { 125 + line-height: 1.4; 161 126 } 162 127 163 - .mini-swash { 164 - display: inline-block; 165 - width: 8px; 166 - height: 8px; 167 - border: 1px solid var(--fg); 168 - border-radius: 50%; 128 + a { 129 + color: var(--c-link); 130 + text-decoration: underline; 169 131 } 170 132 171 - .secret { 172 - color: var(--accent); 133 + a:hover { 134 + color: var(--c-link-hover); 173 135 } 174 136 175 - /* "Mobile Mode" */ 176 - @media only screen and (max-device-width: 600px) { 177 - body { 178 - width: 98vw; 179 - } 137 + hr { 138 + width: 100%; 139 + } 180 140 181 - div.content { 182 - flex-direction: column; 183 - width: 98vw; 184 - } 185 - 186 - main { 187 - width: 98vw; 188 - } 189 - 190 - nav { 191 - width: 98vw; 192 - padding: 8px 0 8px 0; 193 - border-right: none; 194 - } 141 + pre, code { 142 + font-family: var(--t-mono-font); 195 143 }
+7 -9
templates/index.html
··· 9 9 <body> 10 10 <header> 11 11 <h1>Emmeline's Site</h1> 12 - </header> 13 - <div class="content"> 14 12 ${components.nav} 15 - <main> 16 - ${body} 17 - <footer> 18 - <p>Site compiled at <code>${site.time}</code>.</p> 19 - </footer> 20 - </main> 21 - </div> 13 + </header> 14 + <main> 15 + ${body} 16 + </main> 17 + <footer> 18 + <p>Site compiled at <code>${site.time}</code>.</p> 19 + </footer> 22 20 </body> 23 21 </html>