Posts by hhhzzzsss

Please Note: The TotalFreedom Forum has now been put into a read-only mode. Total Freedom has now closed down and will not be returning in any way, shape or form. It has been a pleasure to lead this community and I wish you all the best for your futures.

    The oil pump and geo miner can extract resources from a chunk after it is scanned by a gps, but these resources are nonrenewable. Each chunk has a fixed, random amount these resources, and when it's out, no more can ever be extracted.

    The Oil Pump can extract Oil and the Geo Miner can extract Nether Ice, Uranium, and Salt.

    I believe of the four resources above, the only ones that are completely impossible to obtain in any way other than by extracting from chunks is Oil and Nether ice, so there should be a way of getting more of it without exploring new chunks because you simply can't do that on a skyblock island.

    External Content www.youtube.com
    Content embedded from external sources will not be displayed without your consent.
    Through the activation of external content, you agree that personal data may be transferred to third party platforms. We have provided more information on this in our privacy policy.

    I tried my hand at making a video showcasing one of my procedural builds

    Youtube compression doesn't seem to like it very much though XD

    The most recent update to EpsilonBot is one that has been needed for a while now but that I've been procrastinating on since it takes a while to write and wasn't very fun to implement either. But now, finally, EpsilonBot has functional moderation features that can be used by staff.

    Here's the rundown of how it works:

    Permission Levels

    EpsilonBot now has three permission levels. You can use the `test command to check your permission level.

    0: This is the default permission level that all players have. It can use all of EpsilonBot's features that are intended for public use.

    1: This is the permission level assigned to staff. It allows you to use every single moderation command as well as `restart. The only command that currently cannot be used at this permission level is `stop.

    If you are registered on EpsilonBot's staff list, it will give you this permission level. People that are registered as staff have the permission to add/remove other staff members. You can even remove yourself, although I wouldn't recommend doing that since you won't be able to add yourself back.

    2: This permission level can use every command on EpsilonBot. It is the maximum permission level.

    This permission level is given to anyone that is listed as "trusted" in the bot's config file. No ingame commands can add or remove someone's trusted status. Even if they are removed from the staff list, they will not lose their permission level. The only way to change who is trusted is for me to manually edit config.yml and restart the bot.

    Currently, the people I have listed as trusted are Tizz, Video, and myself. I haven't changed this since before the moderation update, and this was mostly just a way to make sure someone could moderate or stop my bot in an emergency if I wasn't around, so this list may be subject to change.

    Still, don't really see any problems with it at the moment so I've left it as is.

    New Commands

    `addstaff <username> - This command adds a staff member with the specified username. The bot then queries for the player's Minecraft profile through ashcon.app's api and adds their UUID to the staff list if found.

    `removestaff <username> - Same as addstaff, but removes the player from the staff list.

    `liststaff - List all staff members' current usernames by querying for them on ashcon.app's api.

    `blacklist <username> - Adds a player to EpsilonBot's blacklist. Epsilonbot will not respond to commands associated with their uuid.

    `unblacklist <username> - Removes a player from EpsilonBot's blacklist.

    Other Comments

    It was suggested that I have EpsilonBot use /saconfig, list to update its staff list automatically, but I won't be doing this for now for a couple reasons. For one, EpsilonBot would be less portable that way, because currently it is capable of running on servers other than TF (for example, Kaboom), even though I currently only run it on TF. Additionally, however, I just want to have finer control over the staff list, and if anything goes wrong with doing /saconfig list it might just delete the entire staff list by accident. That can be prevented but it's not worth the effort to develop and make secure with everything else considered.

    Also, note that blacklist, staff, and in fact the entire permissions system is based on the player uuid sent with every chat message packet, so none of it will work from discord. Since players can use nicks both ingame and in discord, UUID is the only secure way I can think of for handling things related to blacklist or permissions. Thus, staff cannot use restricted commands from discord, and people on discord cannot be blacklisted. This is not ideal, but it is what it is.

    One final note: this is all broken in the current versions of spigot and paper in 1.19. As you may know, the current versions completely break chat message signatures, and the reason for this seems, based on what I've experienced while developing a client, is that they don't even send chat messages through the chat message packet. Thus, since they are sent as game messages rather than chat messages, not only is the signature not attached but also the uuid. Thus, so long as paper or spigot does not fix this, the permission system will not work in 1.19. Correct me if I'm mistaken about this, though, since I only know this based on my experience while developing HClient.

    After quite a bit of work, I've finally pushed out a major update for SongPlayer!

    You can download the jar from here: https://github.com/hhhzzzsss/SongPlayer/releases/tag/v2.0.0.

    This version of the mod will only work in 1.19.x.

    Here's the description of the update:

    There are multiple ways to learn Java, but if the goal is to pass a test I would highly recommend learning from a textbook. While in practice, programming is a lot about actual hands-on experience, the actual programming portions on tests are usually trivial applications of specific topics they want to test (I would assume this is because planning out and writing a complex program takes much longer than the time normally allotted for a test). They mainly only try to test specific principles and syntactical structures on the coding portions.

    If you can find a thick, well-written book specifically designed for the test you're trying to pass, that will be your best bet. Take your time, be patient, and make sure to do practice tests so you know what the actual exam will be like. If you can find good practice tests, that will be the best thing possible, because it will allow you to know specifically what you have to prepare for. You can walk yourself through practice tests even if you're just getting started and don't have a clue, because it will give you an idea of what you need to learn.

    It's fun to skip to the fun part of following tutorials to do all sorts of cool things with programming, but that is not great for building your foundations. When you get tested, it will be all things like principles of OOP, internal representations of data, common low-level algorithms tree and graph algorithms, etc. I'm not telling you not to have fun, but sitting down with a textbook is the best way to learn the things you will actually need to pass the exam, because it's easy to get by without ever learning foundational stuff like this if you mainly learn from tutorials and hands-on experience.

    In summary: Learning theoretical programming concepts will be more important than actual programming ability, so learn from a textbook and take practice tests.

    Anyway, that's the advice I can give based on my experience. I don't live in the UK so I don't actually know what A-levels are like. Maybe they're bigger on actual programming than America's standardized tests at that level, so make sure you know what to study for.

      Allink

    I actually tried this again just now, logging into the server and trying to access the schematic upload page. Still wasn't working though. I tried two different browsers too, so it's probably not a caching issue, and I made sure I wasn't running EpsilonBot locally.

    I think something is wrong specifically with how my original ip address is stored (maybe it got corrupted), since if I turn on any sort of vpn it will suddenly start working again.

    The only other thing I can think of is that I used an alt that has been used by multiple people to debug EpsilonBot at some point before this issue started happening. I don't know if it's related though.

    @' 5 '

    I think you make a fair point about the Mandelbulb, since it is not one of my more original creations and probably one of the simplest ones at that, but I'd like to mention that creativity and effort still went into making it.

    For one, I put quite a bit of work into the whole framework that allows me to create these procedural structures in Minecraft. It's a system where the code I write generates an output that is automatically detected and loaded by a local server so that I can get instant feedback in-game while designing and refining my creations.

    But more importantly, there's more to rendering a fractal than the base equation alone. Take the iconic Mandelbrot set. When graphed on its own with no extra flair, it looks, as I've heard it described, "like a squashed bug".

    Any amount of color or decoration you see beyond that is already going beyond a simple graph of the fractal produced by the equation. While most people use a simple escape-time algorithm (perhaps with iteration-count smoothing), you can do much fancier things with the coloring, like zoom location, orbit trapping, derivatives and more. This is why so many people can create pictures and animations of the exact same fractal and have them all look different in quality. Sometimes it's simple, but other times quite a lot of thought is put into how it is colored. Here is my favorite example:

    In my case, my approach to coloring Mandelbulb wasn't all that fancy. I used three axis-aligned planes as orbit traps to determine the shade of blue I should use. However, I still had to think about how to make things work well in Minecraft. For one, fractals and orbit traps especially usually produce a continuous spectrum of colors, but Minecraft does not have a continuous spectrum of block colors, so I had to consider how to make it look nice with discrete colors.

    I will admit that my approach to coloring is very similar that of Inigo Quiliez (https://iquilezles.org/articles/mandelbulb/), but I'd like to think that creating this required more skill and effort than downloading and building a schematic with litematica.

    edit: first image wasn't properly displaying so I replaced it.

    1) Your current Minecraft name (IGN):

    hhhzzzsss

    3) Do you have a discord account? If yes, post your username#discriminator here.

    hhhzzzsss#1611

    2) How often you plan to be active as a MB on Total Freedom? (Daily, once a week etc.)

    I probably won't maintain a consistent level of activity on TF.

    Lately I've been here practically every day because I have the time and because EpsilonBot is my most recent project, but I like to work on a variety of projects and TF will not always be my focus.

    Nonetheless, I've had a lot of fun with my latest project and will definitely come around to do other interesting things from time to time.

    3) Will you help contribute to building projects when requested by the Executive Creative Designer (ECD)?:

    Depends

    4) What type of building skill(s) do you currently possess (terraforming, redstone, interior, exterior):

    Procedural and/or mathematical builds, as evidenced by what I've been making with EpsilonBot.

    I've done stuff like terraforming, redstone, and interior/exterior design for fun, but I would not consider myself to be very skilled in these regards since I've never spent that much time on it.

    5) Provide several screenshots with 3+ of your own builds, without any form of shaders:

    This first image is called Quaternion Geode, and it's Quaternion Julia Set that I made to look like a geode with some escape-time coloring tricks.

    This one is just Astolfo. I spent a few days working on a system to convert mmd models into minecraft structures (including the colors), which was actually quite the challenge due to how the textures were mapped, but I eventually succeeded and made this to show after giving him some sort of pose in Blender.

    These next two pictures are of a giant oak tree I made. My methodology to create this is based on the following paper: http://algorithmicbotany.org/papers/colonization.egwnp2007.pdf, but integrating the described methodology into Minecraft provided many challenges of its own. You can see the level of detail it has in the close-up screenshot taken from inside the tree. I spent days refining the algorithm for this, and this isn't even my first time doing this. I've done a similar thing on Kaboom, but since I'm doing it a second time with EpsilonBot I've rewrote it from scratch and made my methodology produce even better results.

    Believe it or not, the following images are made with the exact same tree-generating method. Since I already wrote the framework for this when making Giant Oak, it didn't take very long to make the next two builds. Version 1 is without the extra glass decorations and version 2 is with them.

    This is another thing I made with the tree-generator. Root ball. I tweaked the parameters to make it look very scraggly like tree roots.

    The following build is a bit of an old one that I made on Kaboom.pw, but I think it's worth showing. Believe it or not, this is actually the main end island. With HBot, I scanned the island and used diffusion-limited aggregation to build this structure on top of it. It's not shown clearly in the images, but the giant branching structures you see are all actually branching off of the bedrock on top of the end pillars where the end crystals normally are. Unfortunately, I no longer have this build since Kaboom resets its world daily and I never bothered to save it as a schematic.

    I've actually done lots of stuff like this on Kaboom, but since I haven't saved many screenshots of them and don't want to make this too long, I won't include them all here.

    And finally, I can't leave out EpsilonBot's very first build: Blue Mandelbulb. It may not look so spectacular to most, but it has its place in my heart as one of my favorite fractals.

    6) If there was one thing that you would say you could improve on within your builds, what would it be?

    I've heard a few people mentioning that some of my builds are causing them lag, so perhaps that is something I should consider improving on? I don't really want to sacrifice the level of detail, but I'm sure I can strike a good balance with more experience.

    Other than that, this is a pretty new thing to me since I only came up with the idea of making procedural builds in Minecraft a few weeks ago, so I'll learn more about where and how to improve as time goes on.

    7) (Optional) Do you do any other form of creative work (e.g. drawing, animation, video design, etc.)

    I have basic knowledge of using blender, which was helpful when designing a system to convert mmd models into Minecraft. I also know a bit regarding color theory and composition, but I'm no artist.

    Does fractal art count too? I love designing and rendering fractals, and my pfp is one of the fractals I came up with. In fact, I just love fractals in general.

    8) (Optional) If any players can vouch or provide further evidence for you being the builder behind your builds, please list their names:

    I'm not sure who exactly to name, but I'm sure a lot of players have seen and talked to me as I was developing EpsilonBot and creating procedural builds with it.

    Additional Comments

    To be honest, my main reason for applying as a Master Builder is that I want to be able to upload schematics. Lately, EpsilonBot has been spending all its time building mapart, so I haven't really been making any new procedural builds with it.

    Additionally, even when EpsilonBot is free, I'm limited by the fact that it has to build everything by hand. Since any build with a lot of blocks in it would take a super long time to build, I need to spend a lot of time thinking about how to make my structures have as few blocks as possible, from making non-transparent portions of builds hollow to altogether not making builds that I think would have too many blocks in it (such as the Mandelbox).

    On a final note, I've always loved procedural generation and fractals, and I would be happy to get to share my little projects with you all. Thanks for reading this whole thing. I made it a bit long.

    (Also why are the numbers in the template application out of order).

    I've been working on a bot called EpsilonBot over the past few weeks, so I'll make a post describing what I've implemented so far.

    Commands

    • `help [] - shows a list of commands
    • `repair - Attempts to repair a specified plot
    • `creator - Says who the bot's creator is (it's me)
    • `test - A test command
    • `reloadindex - Reloads the plot index
    • `buildstatus - Gets the current build status
    • `mapart [] [] - Builds mapart for a given image
    • [RESTRICTED] `restart - Restarts the bot
    • [RESTRICTED] `stop - Stops the bot

    Build Sync

    A system that lets my sync procedural builds I make in a local server with TotalFreedom

    On my local build server, it looks like this:

    I write code in golang that creates a file I call REGION_DUMP representing a structure in Minecraft, and my local server has a plugin that automatically detects and loads these files into the world. The bossbar at the top is how my plugin tells me what plot I'm currently standing in. I can select, name, and save plots. The REGION_DUMP is always loaded into my currently selected plot.

    This allows me to immediately see my procedural builds ingame whenever I edit and run my code, which is very useful because I usually edit and rerun my programs many times before I'm satisfied with the result.

    When saved, the plots are registered in an index that can be copied over to EpsilonBot's BuildSync directory, which is how I sync my local builds over to TotalFreedom.

    With this, I've been able to create all sorts of interesting procedural code to generate structures in minecraft, including a fancy tree generator that uses a space colonization algorithm, various hypercomplex fractals that I've tuned to look good in minecraft (such as the quaternion geode you see above), an mmd converter that can turn convert mmd models into minecraft structures, and more.

    Mapart

    You use the mapart command like `mapart <url> [<width>] [<height>]

    The url must be a direct link to an image. If you give it a link to a page containing an image, it will not know what to do.

    As for width and height, these are optional arguments that determine the number of maps horizontally and vertically. By default, they are both 1. However, you can specify up to 3x3 mapart.

    For maparts with dimensions greater than 1, all the tiles will be laid out along the x axis, so you can just fly down the line to collect all your maps.

    When it's done, it will give you a warp that you can use to go to where it built the first mapart tile. It will look something like /warp epsilon_mapart_13.

    Source Code

    All of the code used in both EpsilonBot and my local build sync server are open source and can be found on my Github. Here are the links:

    EpsilonBot: https://github.com/hhhzzzsss/EpsilonBot

    Build Sync Server: https://github.com/hhhzzzsss/BuildSyncServer

    Build Sync Plugin: https://github.com/hhhzzzsss/BuildSyncPlugin

    Just find the area of the circle segment times 4 and subtract that from the area of the circle.

    π r^2 - 4 * (π r^2 - sqrt(3) / 4 r^2)

    = sqrt(3) r^2 -1/3 π r^2.

    or 16 * sqrt(3) - 16/3 π

    Unless I made a mistake somewhere in my calculations.

    I kinda wish I could use LaTeX here since Flarum kept screwing with my formatting.